训练浅神经网络
这个函数训练了一个浅神经网络。关于卷积或LSTM神经网络的深度学习,请参见trainNetwork
代替。
在这里输入x
和目标t
定义一个简单的函数,你可以绘制:
X = [0 1 2 3 4 5 6 7 8];T = [0 0.84 0.91 0.14 -0.77 -0.96 -0.28 0.66 0.99];情节(x, t,“o”)
在这里feedforwardnet
创建一个两层前馈网络。这个网络有一个包含十个神经元的隐藏层。
网= feedforwardnet (10);网=配置(净,x, t);y = net(x)“o”, x, y₁,“x”)
对网络进行训练,然后再进行模拟。
网=火车(净,x, t);y = net(x)“o”, x, y₁,“x”, x, y2,‘*’)
这个例子训练了一个有外部输入的开环非线性自回归网络,以模拟一个由控制电流定义的悬浮磁体系统x
以及磁铁的垂直位置响应t
,然后模拟网络。这个函数preparets
在训练和模拟前准备数据。它创造了开环网络的综合输入xo
,它包含两个外部输入x
和之前的位置值t
.它还准备延迟状态西
.
[x, t] = maglev_dataset;网= narxnet (10);[xo, xi, ~,] = preparets(净,x, {}, t);网=火车(净,xo,ξ);y =净(xo, xi)
同样的系统也可以用闭环形式进行模拟。
netc = closeloop(净);视图(netc) (xcξ,人工智能,tc) = preparets (netc, x, {}, t);yc = netc (xcξ,ai);
并行计算工具箱™允许深度学习工具箱™模拟和训练网络更快和更大的数据集,比一台电脑可以容纳。并行训练目前只支持反向传播训练,不支持自组织映射。万博1manbetx
在这里,培训和仿真是在并行的MATLAB工作者之间进行的。
parpool [X,T] = vinyl_dataset;网= feedforwardnet (10);网=火车(净,X, T,“useParallel”,“是的”,“showResources”,“是的”);Y =净(X);
使用Composite值手动分发数据,并以Composite值的形式返回结果。如果数据是分布式加载的,那么数据集的每个片段必须适合于RAM,整个数据集仅受所有工作人员的总RAM的限制。
[X, T] = vinyl_dataset;Q =大小(X, 2);Xc =复合;Tc =复合;numWorkers =元素个数(Xc);= [0 cell ((1:numWorkers)*(Q/numWorkers))];为i=1:numWorkers indi = (ind(i)+1):ind(i+1);Xc{我}= X(:英蒂);Tc{我}= T(:英蒂);结束网= feedforwardnet;网=配置(净,X, T);网=火车(Xc净,Tc);Yc =净(Xc);
注意,在上面的示例中,函数配置用于设置网络输入的维度和处理设置。这通常在调用train时自动发生,但在提供复合数据时,此步骤必须使用非复合数据手动完成。
如果并行计算工具箱支持当前的GPU设备,可以使用该设备对网络进行训练。万博1manbetxGPU训练目前只支持反向传播训练,不支持自组织映射。万博1manbetx
[X, T] = vinyl_dataset;网= feedforwardnet (10);网=火车(净,X, T,“useGPU”,“是的”);y =净(X);
手动将数据放到GPU上。
[X, T] = vinyl_dataset;Xgpu = gpuArray (X);Tgpu = gpuArray (T);网=配置(净,X, T);网=火车(网,Xgpu, Tgpu);Ygpu =净(Xgpu);Y =收集(Ygpu);
注意,在上面的示例中,函数配置用于设置网络输入的维度和处理设置。这通常在调用train时自动发生,但在提供gpuArray数据时,这一步必须使用非gpuArray数据手动完成。
并行运行,每个worker分配给不同的唯一GPU,额外的worker运行在CPU上:
网=火车(净,X, T,“useParallel”,“是的”,“useGPU”,“是的”);y =净(X);
只使用具有唯一gpu的worker可能会导致更高的速度,因为CPU worker可能跟不上。
网=火车(净,X, T,“useParallel”,“是的”,“useGPU”,“只”);Y =净(X);
在这里,网络以每两分钟不超过一次的速度保存检查点。
[x, t] = vinyl_dataset;Net = fitnet([60 30]);网=火车(净,x, t,“CheckpointFile”,“MyCheckpoint”,“CheckpointDelay”, 120);
在计算机故障后,可以恢复最新的网络并从故障点继续进行训练。检查点文件包括一个结构变量检查点
,其中包括网络、培训记录、文件名、时间和编号。
[x, t] = vinyl_dataset;负载MyCheckpoint网= checkpoint.net;网=火车(净,x, t,“CheckpointFile”,“MyCheckpoint”);
检查点特性的另一个用途是当您停止并行训练会话时(从“UseParallel”
参数),即使在并行训练过程中无法使用神经网络训练工具。在本例中,设置a“CheckpointFile”
,使用Ctrl+C随时停止训练,然后加载检查点文件获取网络和训练记录。
净
- - - - - -输入网络网络
对象输入网络,指定为网络
对象。创建一个网络
对象,例如,feedforwardnet
或narxnet
.
X
- - - - - -网络的输入网络输入,指定为R
——- - - - - -问
矩阵或一个倪
——- - - - - -TS
单元阵列,
R
为输入大小
问
为批量大小
倪= net.numInputs
TS
时间步长是多少
火车
参数可以有两种格式:矩阵,用于静态问题和具有单个输入和输出的网络;单元格数组,用于多个时间步长和具有多个输入和输出的网络。
如果只模拟一个时间步长,可以使用矩阵格式(TS = 1
).它对只有一个输入和输出的网络很方便,但可以用于有更多输入和输出的网络。当网络有多个输入时,矩阵大小为国际扶轮
)———问
.
单元阵列格式更通用,对于有多个输入和输出的网络更方便,允许输入序列被呈现。每个元素X{我,ts}
是一个国际扶轮
——- - - - - -问
矩阵,国际扶轮= net.inputs{我}.size
.
如果使用Composite数据,则“useParallel”
自动设置为“是的”
.该函数接受Composite数据并返回Composite结果。
如果使用gpuArray数据,则“useGPU”
自动设置为“是的”
.该函数接受gpuArray数据并返回gpuArray结果
请注意
如果X的列中至少包含一个南
,火车
不要将该栏用于培训、测试或验证。
T
- - - - - -网络的目标网络目标,指定为U
——- - - - - -问
矩阵或一个没有
——- - - - - -TS
单元阵列,
U
为输出大小
问
为批量大小
没有= net.numOutputs
TS
时间步长是多少
火车
参数可以有两种格式:矩阵,用于静态问题和具有单个输入和输出的网络;单元格数组,用于多个时间步长和具有多个输入和输出的网络。
如果只模拟一个时间步长,可以使用矩阵格式(TS = 1
).它对只有一个输入和输出的网络很方便,但可以用于有更多输入和输出的网络。当网络有多个输入时,矩阵大小为用户界面
)———问
.
单元阵列格式更通用,对于有多个输入和输出的网络更方便,允许输入序列被呈现。每个元素T{我,ts}
是一个用户界面
——- - - - - -问
矩阵,Ui = net.outputs{我}.size
.
如果使用Composite数据,则“useParallel”
自动设置为“是的”
.该函数接受Composite数据并返回Composite结果。
如果使用gpuArray数据,则“useGPU”
自动设置为“是的”
.该函数接受gpuArray数据并返回gpuArray结果
请注意,T
是可选的,仅用于需要目标的网络。
请注意
任何南
目标中的值T
被视为缺失数据。如果一个元素T
是南
,该元素不用于培训、测试或验证。
西
- - - - - -初始输入延迟条件初始输入延迟条件,指定为倪
——- - - - - -ID
单元格数组或R
——- - - - - -(ID *问)
矩阵,
ID = net.numInputDelays
倪= net.numInputs
R
为输入大小
问
为批量大小
对于单元格数组输入,的列西
从最古老的延迟条件到最近的:习{i、k}
是输入我
在时间ts = k - ID
.
西
也是可选的,只需要用于有输入或层延迟的网络。
人工智能
- - - - - -初始层延迟条件初始层延迟条件,指定为问
——- - - - - -LD
单元格数组或如果
)——- (LD *问
)矩阵,
问= net.numLayers
LD = net.numLayerDelays
如果= net.layers{我}.size
问
为批量大小
对于单元格数组输入,的列人工智能
从最古老的延迟条件到最近的:Ai {i、k}
为层输出我
在时间ts = k - LD
.
电子战
- - - - - -错误的重量错误权重,指定为没有
——- - - - - -TS
单元格数组或用户界面
)———问
矩阵,
没有= net.numOutputs
TS
时间步长是多少
Ui = net.outputs{我}.size
问
为批量大小
用于单元阵列输入。每个元素电子战{我,ts}
是一个用户界面
——- - - - - -问
矩阵,
Ui = net.outputs{我}.size
问
为批量大小
错误的重量电子战
也可以用1来代替all或any没有
,TS
,用户界面
或问
.在这种情况下,电子战
是否自动扩展维度以匹配目标T
.这允许方便地在任何维度(如每个样本)中加权重要性,同时在其他维度(如时间,与TS = 1
).如果所有维度都是1,例如电子战= {1}
,则以同样的重要性处理所有目标值。的默认值电子战
.
如上所述,误差权重电子战
可以和目标的维度相同吗T
,或者将某些维度设置为1。例如,如果电子战
是1 -问
,则目标样本具有不同的重要性,但样本中的每个元素具有相同的重要性。如果电子战
(的总和用户界面
),则每个输出元素具有不同的重要性,所有样本都具有相同的重要性。
指定可选的逗号分隔的对名称,值
参数。的名字
参数名和价值
为对应值。的名字
必须出现在引号内。可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家
.
“useParallel”,“是的”
useParallel
- - - - - -选项指定并行计算“不”
(默认)|“是的”
选项指定并行计算,指定为“是的”
或“不”
.
“不”
-计算发生在正常的MATLAB线程。这是默认值“useParallel”
设置。
“是的”
如果一个并行池是打开的,并行工作器将会进行计算。否则在普通的MATLAB上进行计算®线程。
useGPU
- - - - - -选项指定GPU计算“不”
(默认)|“是的”
|“只”
选项指定GPU计算,指定为“是的”
,“不”
,或“只”
.
“不”
—CPU进行计算。这是默认值“useGPU”
设置。
“是的”
—计算发生在当前gpuDevice
如果它是一个支持的GP万博1manbetxU(请参阅并行计算工具箱的GPU要求)。如果当前gpuDevice
不支持,计算仍万博1manbetx在CPU上进行。如果“useParallel”
也“是的”
当一个并行池打开时,每个拥有唯一GPU的worker使用该GPU,其他worker在各自的CPU核上运行计算。
“只”
—如果没有打开并行池,则此设置与“是的”
.如果一个并行池是打开的,那么只使用具有唯一gpu的工作人员。但是,如果一个并行池是打开的,但是没有支持的gpu可用,那么计算将恢复到在所有工作cpu万博1manbetx上执行。
showResources
- - - - - -显示资源的选项“不”
(默认)|“是的”
选项显示资源,指定为“是的”
或“不”
.
“不”
—不显示命令行中使用的计算资源。这是默认设置。
“是的”
—在命令行显示实际使用的计算资源的概要。如果请求并行或GPU计算,但未打开并行池或支持的GPU不可用,则实际资源可能与请求的资源不一致。万博1manbetx当使用并行worker时,描述每个worker的计算模式,包括池中未使用的worker。
减少
- - - - - -减少内存内存减少,指定为正整数。
对于大多数神经网络,默认的CPU训练计算模式是编译的MEX算法。然而,对于大型网络,可能使用MATLAB计算模式进行计算。这可以通过使用来确认“showResources”
.如果正在使用MATLAB,而内存是一个问题,将reduce选项设置为N大于1,将训练所需的临时存储减少N倍,以换取更长的训练时间。
CheckpointFile
- - - - - -检查点文件''
(默认)|特征向量检查点文件,指定为字符向量。
的值“CheckpointFile”
可以设置为保存在当前工作文件夹中的文件名,也可以设置为另一个文件夹中的文件路径,或者设置为空字符串以禁用检查点保存(默认值)。
CheckpointDelay
- - - - - -检查点延迟检查点延迟,指定为非负整数。
可选参数“CheckpointDelay”
限制保存发生的频率。限制检查点的频率可以通过保持较低的检查点时间来提高效率。它的默认值为60,这意味着每分钟不会发生超过一次的检查点保存。设置的值“CheckpointDelay”
如果希望检查点保存在每个epoch只发生一次,则为0。
trainedNet
——训练网络网络
对象训练有素的网络,作为一个网络
对象。
tr
——培训记录培训记录(时代
和性能
),返回为一个结构,其字段依赖于网络训练函数(net.NET.trainFcn
).它可以包括以下字段:
培训,数据划分,性能功能和参数
用于训练、验证和测试集的数据划分指标
用于训练验证和测试集的数据划分掩码
纪元数(num_epochs
)和最佳时期(best_epoch
)
训练州名单(州
)
在整个训练过程中记录其值的每个州名的字段
在每个时期评价网络的最佳性能:在训练集上的最佳性能(best_perf
),验证集上的最佳性能(best_vperf
),以及测试集中的最佳性能(best_tperf
)
火车
调用指定的函数net.trainFcn
,使用表示的训练参数值net.trainParam
.
通常,训练的一个阶段被定义为网络中所有输入向量的单一表示。然后根据所有演讲的结果对网络进行更新。
训练一直进行到出现最大数量的纪元,达到性能目标,或任何其他功能的停止条件net.trainFcn
发生。
有些训练函数偏离了这个标准,在每个epoch中只表示一个输入向量(或序列)。从并发的输入向量(或序列)中为每个epoch随机选择一个输入向量(或序列)。competlayer
返回网络使用trainru
,这是一个训练函数。
你点击一个链接对应于这个MATLAB命令:
通过在MATLAB命令窗口中输入命令来运行命令。Web浏览器不支持MATLAB命令。万博1manbetx
你也可以从以下列表中选择一个网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。