主要内容

火车

训练浅神经网络

描述

这个函数训练了一个浅神经网络。关于卷积或LSTM神经网络的深度学习,请参见trainNetwork代替。

例子

trainedNet=火车(XT西人工智能电子战列车网络根据net.trainFcnnet.trainParam

trainedNettr) =火车(XT西人工智能电子战还返回一份培训记录。

例子

trainedNettr) =火车(XT西人工智能电子战名称,值使用由一个或多个名称-值对参数指定的附加选项训练网络。

例子

全部折叠

在这里输入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随时停止训练,然后加载检查点文件获取网络和训练记录。

输入参数

全部折叠

输入网络,指定为网络对象。创建一个网络对象,例如,feedforwardnetnarxnet

网络输入,指定为R——- - - - - -矩阵或一个——- - - - - -TS单元阵列,

  • R为输入大小

  • 为批量大小

  • 倪= net.numInputs

  • TS时间步长是多少

火车参数可以有两种格式:矩阵,用于静态问题和具有单个输入和输出的网络;单元格数组,用于多个时间步长和具有多个输入和输出的网络。

  • 如果只模拟一个时间步长,可以使用矩阵格式(TS = 1).它对只有一个输入和输出的网络很方便,但可以用于有更多输入和输出的网络。当网络有多个输入时,矩阵大小为国际扶轮)———

  • 单元阵列格式更通用,对于有多个输入和输出的网络更方便,允许输入序列被呈现。每个元素X{我,ts}是一个国际扶轮——- - - - - -矩阵,国际扶轮= net.inputs{我}.size

如果使用Composite数据,则“useParallel”自动设置为“是的”.该函数接受Composite数据并返回Composite结果。

如果使用gpuArray数据,则“useGPU”自动设置为“是的”.该函数接受gpuArray数据并返回gpuArray结果

请注意

如果X的列中至少包含一个火车不要将该栏用于培训、测试或验证。

网络目标,指定为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”,“是的”

选项指定并行计算,指定为“是的”“不”

  • “不”-计算发生在正常的MATLAB线程。这是默认值“useParallel”设置。

  • “是的”如果一个并行池是打开的,并行工作器将会进行计算。否则在普通的MATLAB上进行计算®线程。

选项指定GPU计算,指定为“是的”“不”,或“只”

  • “不”—CPU进行计算。这是默认值“useGPU”设置。

  • “是的”—计算发生在当前gpuDevice如果它是一个支持的GP万博1manbetxU(请参阅并行计算工具箱的GPU要求)。如果当前gpuDevice不支持,计算仍万博1manbetx在CPU上进行。如果“useParallel”“是的”当一个并行池打开时,每个拥有唯一GPU的worker使用该GPU,其他worker在各自的CPU核上运行计算。

  • “只”—如果没有打开并行池,则此设置与“是的”.如果一个并行池是打开的,那么只使用具有唯一gpu的工作人员。但是,如果一个并行池是打开的,但是没有支持的gpu可用,那么计算将恢复到在所有工作cpu万博1manbetx上执行。

选项显示资源,指定为“是的”“不”

  • “不”—不显示命令行中使用的计算资源。这是默认设置。

  • “是的”—在命令行显示实际使用的计算资源的概要。如果请求并行或GPU计算,但未打开并行池或支持的GPU不可用,则实际资源可能与请求的资源不一致。万博1manbetx当使用并行worker时,描述每个worker的计算模式,包括池中未使用的worker。

内存减少,指定为正整数。

对于大多数神经网络,默认的CPU训练计算模式是编译的MEX算法。然而,对于大型网络,可能使用MATLAB计算模式进行计算。这可以通过使用来确认“showResources”.如果正在使用MATLAB,而内存是一个问题,将reduce选项设置为N大于1,将训练所需的临时存储减少N倍,以换取更长的训练时间。

检查点文件,指定为字符向量。

的值“CheckpointFile”可以设置为保存在当前工作文件夹中的文件名,也可以设置为另一个文件夹中的文件路径,或者设置为空字符串以禁用检查点保存(默认值)。

检查点延迟,指定为非负整数。

可选参数“CheckpointDelay”限制保存发生的频率。限制检查点的频率可以通过保持较低的检查点时间来提高效率。它的默认值为60,这意味着每分钟不会发生超过一次的检查点保存。设置的值“CheckpointDelay”如果希望检查点保存在每个epoch只发生一次,则为0。

输出参数

全部折叠

训练有素的网络,作为一个网络对象。

培训记录(时代性能),返回为一个结构,其字段依赖于网络训练函数(net.NET.trainFcn).它可以包括以下字段:

  • 培训,数据划分,性能功能和参数

  • 用于训练、验证和测试集的数据划分指标

  • 用于训练验证和测试集的数据划分掩码

  • 纪元数(num_epochs)和最佳时期(best_epoch

  • 训练州名单(

  • 在整个训练过程中记录其值的每个州名的字段

  • 在每个时期评价网络的最佳性能:在训练集上的最佳性能(best_perf),验证集上的最佳性能(best_vperf),以及测试集中的最佳性能(best_tperf

算法

火车调用指定的函数net.trainFcn,使用表示的训练参数值net.trainParam

通常,训练的一个阶段被定义为网络中所有输入向量的单一表示。然后根据所有演讲的结果对网络进行更新。

训练一直进行到出现最大数量的纪元,达到性能目标,或任何其他功能的停止条件net.trainFcn发生。

有些训练函数偏离了这个标准,在每个epoch中只表示一个输入向量(或序列)。从并发的输入向量(或序列)中为每个epoch随机选择一个输入向量(或序列)。competlayer返回网络使用trainru,这是一个训练函数。

另请参阅

|||

之前介绍过的R2006a