NetTrain

NetTrain[net,{input1,input2,}{output1,}]
通过给出 inputi 作为输入,使用自动选择的损失函数最小化 outputi 和网络的实际输出之间的差异训练指定的神经网络.

NetTrain[net,{input1output1,input2output2,}]
也可以基于实例 inputi 和给定输出 outputi 训练指定神经网络.

NetTrain[net,port1{data11,data12,},port2{},]
通过在指定端口提供训练数据训练指定神经网络,由网络的 "Loss" 端口定义损失函数.

NetTrain[net,{port1,port2,,port1,,}]
利用训练数据中的一组实例训练网络.

NetTrain[net,examples,loss]
在比较实际和网络要求的输出时用 loss 作为损失函数.

更多信息和选项更多信息和选项

  • 单个输入可以是标量、向量、数字张量、Image 对象,或字符串.
  • 如果没有明确给出损失函数,系统将基于网络中最后的层自动选择损失函数.
  • 当用规范 porti->{datai1,datai2,} 指定目标输出时,任何自定义损失层都应把 porti 作为输入来计算损失.
  • 当损失层是由 NetTrain 自动附加到输出端口上时,它们的 "Target" 端口将取自训练数据,使用与原来输出端口同样的名称.
  • 当用规范 inputs->outputs 给出训练数据时,网络不应含有任何损失层,应该正好只有一个输入和输出端口.
  • 支持下列选项:
  • BatchSizeAutomatic一次处理多少个实例
    MaxTrainingRoundsAutomatic遍历训练数据多少次
    MethodAutomatic所用的训练方法
    TargetDevice"CPU"执行训练的目标
    ValidationSetNone训练中用于计算模型的数据集
  • 可以给出下列 ValidationSet 设置:
  • data验证集的形式和训练数据一样
    None用现有训练集估计损失
  • 当设置 ValidationSet->data 时,NetTrain 将返回训练中产生最低验证损失的网络.
  • NetTrain[net,data,loss] 中,可将下列系列形式用于 loss
  • Automatic自动把损失层附加到所有输出(缺省情况下)
    "port"将给定端口解释为损失
    {"port1","port2",}把多个端口解释为损失,同时对它们进行最小化
    layer用预先配置好的网络层作为损失,并把它附加到网络的输出
  • 可用作预先配置好的损失层的网络层包括 MeanAbsoluteLossLayerMeanSquaredLossLayerCrossEntropyLossLayer.
  • Method 的可能的设置包括:
  • "StochasticGradientDescent"通过取随机批次的输入数据的梯度最小化损失
    "ADAM"使用与梯度的对角缩放无关的自适应学习速率的随机梯度下降法
  • 可以用 Method{"method",opt1val1,} 来指定特定方法的子选项. 所有方法都可使用的子选项有:
  • "InitialLearningRate"0.001在求导的方向上采用的步长
    "L2Regularization"0与所有习得张量的 L2 范数关联的全局损失
  • 对于方法 "StochasticGradientDescent",支持下列子选项:
  • "Momentum"0.93在更新导数时保留多少前一步的结果
    "GradientClipping"None梯度的幅值大于多少时应被截去
    "LearningRateSchedule""Polynomial"怎样缩放作为迭代次数的函数的学习速率
  • 当设置为 "LearningRateSchedule"->f 时,用 f[batch,total,initial] 计算给定批次的学习速率,其中 batch 为当前的批次号,total 为训练时使用多少个批次,initial 为初始学习速率.
  • 对于方法 "ADAM",支持下列子选项:
  • "Beta1"0.93第一动量估计的指数衰减率
    "Beta2"0.999第二动量估计的指数衰减率

范例范例打开所有单元关闭所有单元

基本范例  (3)基本范例  (3)

定义一个单层神经网络,接受标量数值,产生标量数值:

In[1]:=
Click for copyable input
Out[1]=

在 input output 数据对上训练该网络:

In[2]:=
Click for copyable input
Out[2]=

预测新输入的输出值:

In[3]:=
Click for copyable input
Out[3]=

一次做多个预测:

In[4]:=
Click for copyable input
Out[4]=

预测是输入的线性函数:

In[5]:=
Click for copyable input
Out[5]=

定义一个接受标量数值,产生用于 TrueFalse 类别的概率的长度为 2 的向量的网络:

In[1]:=
Click for copyable input
Out[1]=

训练网络来根据输入预测类别:

In[2]:=
Click for copyable input
Out[2]=

预测新的输入的类别:

In[3]:=
Click for copyable input
Out[3]=

一次做多个预测:

In[4]:=
Click for copyable input
Out[4]=

绘制类别 True 作为输入的函数的概率:

In[5]:=
Click for copyable input
Out[5]=

定义一个三层的网络,接受长度为 2 的向量,产生标量数值:

In[1]:=
Click for copyable input
Out[1]=

从把 (x,y) 映射到 x*y 的函数中构建训练数据:

In[2]:=
Click for copyable input

在数据上训练网络:

In[3]:=
Click for copyable input
Out[3]=

绘制作为 xy 的函数的网络的预测:

In[4]:=
Click for copyable input
Out[4]=
2016年引入
(11.0)