主要内容gydF4y2Ba

定义定制的复发性深度学习层gydF4y2Ba

如果深度学习工具箱™不提供层你需要为你的任务,你可以定义自己的自定义层使用这个例子作为参考。一个内置的图层列表,看到gydF4y2Ba深度学习层的列表gydF4y2Ba。gydF4y2Ba

定义一个自定义的深度学习层,您可以使用提供的模板在这个例子中,需要通过以下步骤:gydF4y2Ba

  1. 名字一层一层——给一个名称,这样您就可以在MATLAB中使用它gydF4y2Ba®gydF4y2Ba。gydF4y2Ba

  2. 声明层属性指定图层的属性,包括可学的参数和状态参数。gydF4y2Ba

  3. 创建一个构造函数(可选)——指定层如何构造和初始化它的属性。如果你不指定一个构造函数,那么在创建、软件初始化gydF4y2Ba的名字gydF4y2Ba,gydF4y2Ba描述gydF4y2Ba,gydF4y2Ba类型gydF4y2Ba属性与gydF4y2Ba[]gydF4y2Ba并设置输入和输出层的数量为1。gydF4y2Ba

  4. 创建向前函数——指定数据传递通过层(向前传播)在预测时间和培训时间。gydF4y2Ba

  5. 创建重置状态函数(可选)——指定如何重置状态参数。gydF4y2Ba

  6. 创建一个反向功能(可选)——指定的衍生品损失对输入数据和可学的参数(向后传播)。如果你不指定一个落后的函数,那么远期功能必须支持金宝appgydF4y2BadlarraygydF4y2Ba对象。gydF4y2Ba

当定义层功能,您可以使用gydF4y2BadlarraygydF4y2Ba对象。gydF4y2Ba使用gydF4y2BadlarraygydF4y2Ba更易于处理高维数据的对象允许您标签的尺寸。例如,您可以标签尺寸对应于空间,时间,频道,使用批处理维度gydF4y2Ba“S”gydF4y2Ba,gydF4y2Ba“T”gydF4y2Ba,gydF4y2Ba“C”gydF4y2Ba,gydF4y2Ba“B”gydF4y2Ba标签,分别。未指明的和其他维度,使用gydF4y2Ba“U”gydF4y2Ba标签。为gydF4y2BadlarraygydF4y2Ba对象的函数操作特定的尺寸,你可以指定尺寸标签的格式gydF4y2BadlarraygydF4y2Ba直接对象,或通过使用gydF4y2BaDataFormatgydF4y2Ba选择。gydF4y2Ba

使用格式化的gydF4y2BadlarraygydF4y2Ba对象自定义层也允许您定义的输入和输出层有不同的格式,如交换层,添加或删除维度。例如,您可以定义一个层,将mini-batch作为输入的图像格式gydF4y2Ba“SSCB”gydF4y2Ba(空间、空间、通道、批处理)和输出序列的mini-batch格式gydF4y2Ba“认知行为治疗”gydF4y2Ba(通道、批量、时间)。使用格式化的gydF4y2BadlarraygydF4y2Ba对象还允许您定义层,可以操作数据与不同的输入格式,例如,层支持输入格式金宝appgydF4y2Ba“SSCB”gydF4y2Ba(空间、空间、通道、批处理)gydF4y2Ba“认知行为治疗”gydF4y2Ba(通道、批量、时间)。gydF4y2Ba

dlarraygydF4y2Ba对象还可以支持自动分化。金宝app因此,如果你的转发功能完全支持金宝appgydF4y2BadlarraygydF4y2Ba对象,然后向后定义函数是可选的。gydF4y2Ba

能够支持使用格式化金宝appgydF4y2BadlarraygydF4y2Ba对象的自定义层转发功能,也继承了gydF4y2Bannet.layer.FormattablegydF4y2Ba类在定义自定义层。例如,看到的gydF4y2Ba定义定制的深度学习与格式化输入层gydF4y2Ba。gydF4y2Ba

这个例子显示了如何定义一个窥视孔LSTM层gydF4y2Ba[1]gydF4y2Ba,这是一个周期性层与可学的参数,并使用它在一个神经网络。gydF4y2Ba的窥孔LSTM层是一个变种LSTM层,门的计算使用层细胞状态。gydF4y2Ba

过渡层模板gydF4y2Ba

中间一层模板复制到一个新文件在MATLAB。这个模板提供了一个中间的结构层类定义。概述:gydF4y2Ba

  • 可选gydF4y2Ba属性gydF4y2Ba块层属性,可学的参数和状态参数。gydF4y2Ba

  • 层构造函数。gydF4y2Ba

  • 的gydF4y2Ba预测gydF4y2Ba功能和可选的gydF4y2Ba向前gydF4y2Ba函数。gydF4y2Ba

  • 可选gydF4y2BaresetStategydF4y2Ba功能层与国家性质。gydF4y2Ba

  • 可选gydF4y2Ba落后的gydF4y2Ba函数。gydF4y2Ba

classdefgydF4y2BamyLayer < nnet.layer.LayergydF4y2Ba%……gydF4y2Ba% & nnet.layer。为mattable ... % (Optional)% & nnet.layer。Acceleratable %(可选)gydF4y2Ba属性gydF4y2Ba%(可选)层属性。gydF4y2Ba%声明层属性。gydF4y2Ba结束gydF4y2Ba属性gydF4y2Ba(可学的)gydF4y2Ba%(可选)层可学的参数。gydF4y2Ba%这里声明可学的参数。gydF4y2Ba结束gydF4y2Ba属性gydF4y2Ba(状态)gydF4y2Ba%(可选)层状态参数。gydF4y2Ba%申报状态参数。gydF4y2Ba结束gydF4y2Ba属性gydF4y2Ba(可学的,状态)gydF4y2Ba%(可选)嵌套dlnetwork对象都可学的gydF4y2Ba%参数和状态参数。gydF4y2Ba%声明嵌套网络可学的和状态参数。gydF4y2Ba结束gydF4y2Ba方法gydF4y2Ba函数gydF4y2Ba层= myLayer ()gydF4y2Ba%(可选)创建一个myLayer。gydF4y2Ba%这个函数必须具有相同的名称作为类。gydF4y2Ba%定义层构造器函数。gydF4y2Ba结束gydF4y2Ba函数gydF4y2Ba[Z,状态]=预测(层,X)gydF4y2Ba%前进通过层预测时间和输入数据gydF4y2Ba%输出结果和状态更新。gydF4y2Ba%gydF4y2Ba%的输入:gydF4y2Ba%层-层向前传播gydF4y2Ba% X -输入数据gydF4y2Ba%输出:gydF4y2Ba% Z -输出层的功能gydF4y2Ba%——(可选)更新层状态gydF4y2Ba%gydF4y2Ba%,与多个输入层,取代X X1,…, XN,gydF4y2Ba% N是输入的数量。gydF4y2Ba%,与多个输出层,取代ZgydF4y2Ba% Z1,…,Z米,在那里米我s the number of outputs.%——层具有多个状态参数,更换状态gydF4y2Ba% state1,…,状态K,在那里K我s the number of state%的参数。gydF4y2Ba%定义层预测函数。gydF4y2Ba结束gydF4y2Ba函数gydF4y2Ba向前(Z、状态、内存)=(层,X)gydF4y2Ba%(可选)正向输入数据通过层培训gydF4y2Ba%的时间和输出结果,更新后的状态,和记忆gydF4y2Ba%值。gydF4y2Ba%gydF4y2Ba%的输入:gydF4y2Ba%层-层向前传播gydF4y2Ba% X -层输入数据gydF4y2Ba%输出:gydF4y2Ba% Z -输出层的功能gydF4y2Ba%——(可选)更新层状态gydF4y2Ba%的记忆——自定义(可选的)内存值落后gydF4y2Ba%的功能gydF4y2Ba%gydF4y2Ba%,与多个输入层,取代X X1,…, XN,gydF4y2Ba% N是输入的数量。gydF4y2Ba%,与多个输出层,取代ZgydF4y2Ba% Z1,…,Z米,在那里米我s the number of outputs.%——层具有多个状态参数,更换状态gydF4y2Ba% state1,…,状态K,在那里K我s the number of state%的参数。gydF4y2Ba%定义层函数。gydF4y2Ba结束gydF4y2Ba函数gydF4y2Ba层= resetState(层)gydF4y2Ba%(可选)设置层的状态。gydF4y2Ba%定义重置状态函数。gydF4y2Ba结束gydF4y2Ba函数gydF4y2Ba[dLdX, dLdW dLdSin] =向后(层,X, Z, dLdZ dLdSout,内存)gydF4y2Ba%(可选)向后传播损失的导数gydF4y2Ba%通过层功能。gydF4y2Ba%gydF4y2Ba%的输入:gydF4y2Ba%层-层反向传播gydF4y2Ba% X -层输入数据gydF4y2Ba% Z -层输出数据gydF4y2Ba% dLdZ -导数的损失对层gydF4y2Ba%输出gydF4y2Ba% dLdSout——(可选)损失的导数gydF4y2Ba%状态输出gydF4y2Ba%的记忆——记忆值函数gydF4y2Ba%输出:gydF4y2Ba% dLdX -导数的损失对输入层gydF4y2Ba% dLdW——(可选)的导数对损失gydF4y2Ba%可学的参数gydF4y2Ba% dLdSin——(可选)的导数对损失gydF4y2Ba%状态输入gydF4y2Ba%gydF4y2Ba%——层与状态参数,必须向后语法gydF4y2Ba%包括dLdSout和dLdSin,或没有。gydF4y2Ba%,与多个输入层,X和dLdX替换gydF4y2Ba% X1,…,XN和dLdX1,...,dLdXN, respectively, where N is%的数量输入。gydF4y2Ba%,与多个输出层,Z和dlZ替换gydF4y2Ba% Z1,…,Z米和dLdZ,...,dLdZM, respectively, where M is the%的输出。gydF4y2Ba%——层具有多个可学的参数,替换gydF4y2Ba%与dLdW1 dLdW,…,dLdWP, where P is the number of%可学的参数。gydF4y2Ba%——层具有多个状态参数,取代dLdSingydF4y2Ba%和dLdSout dLdSin1,……、dLdSinK和gydF4y2Ba% dLdSout1,…,dldSoutK, respectively, where K is the number%的状态参数。gydF4y2Ba%定义层向后函数。gydF4y2Ba结束gydF4y2Ba结束gydF4y2Ba结束gydF4y2Ba

名字层gydF4y2Ba

首先,为层指定一个名称。在第一行的类文件,替换现有的名字gydF4y2BamyLayergydF4y2Ba与gydF4y2BapeepholeLSTMLayergydF4y2Ba。允许层输出不同的数据格式,例如数据的格式gydF4y2Ba“认知行为治疗”gydF4y2Ba(通道、批量、时间)序列输出和格式gydF4y2Ba“CB”gydF4y2Ba(通道、批处理)单次步骤或功能输出,也包括gydF4y2Bannet.layer.FormattablegydF4y2Bamixin。gydF4y2Ba

classdefgydF4y2BapeepholeLSTMLayer < nnet.layer。层& nnet.layer.FormattablegydF4y2Ba…gydF4y2Ba结束gydF4y2Ba

接下来,重命名gydF4y2BamyLayergydF4y2Ba构造函数(第一个函数gydF4y2Ba方法gydF4y2Ba部分),具有相同的名称作为层。gydF4y2Ba

方法gydF4y2Ba函数gydF4y2Ba层= peepholeLSTMLayer ()……gydF4y2Ba结束gydF4y2Ba…gydF4y2Ba结束gydF4y2Ba

保存层gydF4y2Ba

层类文件保存在一个新文件命名gydF4y2BapeepholeLSTMLayer.mgydF4y2Ba。文件名称必须匹配层名称。使用层,必须保存文件在当前文件夹或文件夹在MATLAB的道路。gydF4y2Ba

声明属性、状态和可学的参数gydF4y2Ba

声明的层属性gydF4y2Ba属性gydF4y2Ba节中,层的状态gydF4y2Ba属性(状态)gydF4y2Ba部分,可学的参数gydF4y2Ba属性(可学的)gydF4y2Ba部分。gydF4y2Ba

默认情况下,自定义中间层具有这些属性。不声明这些属性gydF4y2Ba属性gydF4y2Ba部分。gydF4y2Ba

财产gydF4y2Ba 描述gydF4y2Ba
的名字gydF4y2Ba 图层名称,指定为一个特征向量或字符串标量。为gydF4y2Ba层gydF4y2Ba数组输入,gydF4y2BatrainNetworkgydF4y2Ba,gydF4y2BaassembleNetworkgydF4y2Ba,gydF4y2BalayerGraphgydF4y2Ba,gydF4y2BadlnetworkgydF4y2Ba函数自动分配名字与名字层gydF4y2Ba”gydF4y2Ba。gydF4y2Ba
描述gydF4y2Ba

一行的描述层,指定为字符串标量或特征向量。这个描述层显示在一个时出现gydF4y2Ba层gydF4y2Ba数组中。gydF4y2Ba

如果你不指定层的描述,然后软件显示层的类名。gydF4y2Ba

类型gydF4y2Ba

层的类型,指定为一个特征向量或字符串标量。的价值gydF4y2Ba类型gydF4y2Ba当层显示在一个出现gydF4y2Ba层gydF4y2Ba数组中。gydF4y2Ba

如果你不指定层类型,那么软件显示层的类名。gydF4y2Ba

NumInputsgydF4y2Ba 输入层的数量,指定为一个正整数。如果不指定这个值,则软件自动设置gydF4y2BaNumInputsgydF4y2Ba人名的数目gydF4y2BaInputNamesgydF4y2Ba。默认值是1。gydF4y2Ba
InputNamesgydF4y2Ba 输入层的名称,指定为一个单元阵列的特征向量。如果不指定这个值gydF4y2BaNumInputsgydF4y2Ba大于1,那么软件自动设置gydF4y2BaInputNamesgydF4y2Ba来gydF4y2Ba{“三机”,…,“客栈”}gydF4y2Ba,在那里gydF4y2BaNgydF4y2Ba等于gydF4y2BaNumInputsgydF4y2Ba。默认值是gydF4y2Ba{'在'}gydF4y2Ba。gydF4y2Ba
NumOutputsgydF4y2Ba 输出层的数量,指定为一个正整数。如果不指定这个值,则软件自动设置gydF4y2BaNumOutputsgydF4y2Ba人名的数目gydF4y2BaOutputNamesgydF4y2Ba。默认值是1。gydF4y2Ba
OutputNamesgydF4y2Ba 输出层的名称,指定为一个单元阵列的特征向量。如果不指定这个值gydF4y2BaNumOutputsgydF4y2Ba大于1,那么软件自动设置gydF4y2BaOutputNamesgydF4y2Ba来gydF4y2Ba{着干活,…,“outM”}gydF4y2Ba,在那里gydF4y2Ba米gydF4y2Ba等于gydF4y2BaNumOutputsgydF4y2Ba。默认值是gydF4y2Ba{“出”}gydF4y2Ba。gydF4y2Ba

如果层没有其他属性,那么您可以省略的gydF4y2Ba属性gydF4y2Ba部分。gydF4y2Ba

提示gydF4y2Ba

如果你创建一个与多个输入层,然后你必须设置gydF4y2BaNumInputsgydF4y2Ba或gydF4y2BaInputNamesgydF4y2Ba属性层构造函数。如果你创建一个和多个输出层,然后你必须设置gydF4y2BaNumOutputsgydF4y2Ba或gydF4y2BaOutputNamesgydF4y2Ba属性层构造函数。gydF4y2Ba例如,看到的gydF4y2Ba定义定制的深度学习与多个输入层gydF4y2Ba。gydF4y2Ba

声明以下层属性gydF4y2Ba属性gydF4y2Ba部分:gydF4y2Ba

  • NumHiddenUnitsgydF4y2Ba-数量的隐藏单位的窥视孔LSTM操作gydF4y2Ba

  • OutputModegydF4y2Ba——标志层是否返回一个指示序列或一个时间步gydF4y2Ba

属性gydF4y2Ba%层属性。gydF4y2BaNumHiddenUnits OutputModegydF4y2Ba结束gydF4y2Ba

窥孔LSTM层有四个可学的参数:输入权重,权重复发,窥视孔的重量和偏见。声明这些可学的参数gydF4y2Ba属性(可学的)gydF4y2Ba部分的名称gydF4y2BaInputWeightsgydF4y2Ba,gydF4y2BaRecurrentWeightsgydF4y2Ba,gydF4y2BaPeepholeWeightsgydF4y2Ba,gydF4y2Ba偏见gydF4y2Ba,分别。gydF4y2Ba

属性gydF4y2Ba(可学的)gydF4y2Ba%层可学的参数。gydF4y2BaInputWeights RecurrentWeights PeepholeWeights偏见gydF4y2Ba结束gydF4y2Ba

窥孔LSTM层有两个状态参数:隐藏的状态和细胞状态。声明这些参数的状态gydF4y2Ba属性(状态)gydF4y2Ba部分的名称gydF4y2BaHiddenStategydF4y2Ba和gydF4y2BaCellStategydF4y2Ba,分别。gydF4y2Ba

属性gydF4y2Ba(状态)gydF4y2Ba%层状态参数。gydF4y2BaHiddenState CellStategydF4y2Ba结束gydF4y2Ba

并行训练包含自定义的网络层与状态参数使用gydF4y2BatrainNetworkgydF4y2Ba不支持功能。金宝app当你训练一个网络与自定义层状态参数gydF4y2BaExecutionEnvironmentgydF4y2Ba培训选项必须是gydF4y2Ba“汽车”gydF4y2Ba,gydF4y2Ba“图形”gydF4y2Ba,或gydF4y2Ba“cpu”gydF4y2Ba。gydF4y2Ba

创建构造函数gydF4y2Ba

创建的函数结构层和初始化层属性。指定任何变量需要创建构造函数作为输入层。gydF4y2Ba

窥孔LSTM层构造函数需要两个输入参数(隐藏单位的数量和输入通道的数量)和两个可选参数(图层名称和输出模式)。指定两个输入参数命名gydF4y2BanumHiddenUnitsgydF4y2Ba和gydF4y2BainputSizegydF4y2Ba在gydF4y2BapeepholeLSTMLayergydF4y2Ba函数,对应数量的隐藏单元和输入通道的数量,分别。指定可选的输入参数的名称作为一个参数gydF4y2Baarg游戏gydF4y2Ba。添加一个评论的函数,函数的语法解释道。gydF4y2Ba

函数gydF4y2Ba层= peepholeLSTMLayer (numHiddenUnits inputSize, args)gydF4y2Ba% PEEPHOLELSTMLAYER窥视孔LSTM层gydF4y2Ba%层= peepholeLSTMLayer (numHiddenUnits inputSize)gydF4y2Ba%创建一个窥视孔LSTM指定数量的层gydF4y2Ba%隐藏单元和输入通道。gydF4y2Ba%gydF4y2Ba% = peepholeLSTMLayer层(numHiddenUnits、inputSize Name =价值)gydF4y2Ba%创建一个窥视孔LSTM层和指定额外的gydF4y2Ba%选择使用一个或多个名称参数:gydF4y2Ba%gydF4y2Ba%的名字——层,名称指定为一个字符串。gydF4y2Ba%默认是“”。gydF4y2Ba%gydF4y2Ba% OutputMode——输出模式,指定的gydF4y2Ba%:gydF4y2Ba%的“序列”——输出整个序列gydF4y2Ba%的数据。gydF4y2Ba%gydF4y2Ba%“最后”——步最后一次输出gydF4y2Ba%的数据。gydF4y2Ba%默认是“序列”。gydF4y2Ba…gydF4y2Ba结束gydF4y2Ba

初始化层属性gydF4y2Ba

初始化图层属性,包括可学的和状态参数的构造函数。取代的评论gydF4y2Ba%层构造函数gydF4y2Ba初始化的代码层属性。gydF4y2Ba

解析输入参数使用gydF4y2Ba参数gydF4y2Ba块并设置gydF4y2Ba的名字gydF4y2Ba和输出特性。gydF4y2Ba

参数gydF4y2BanumHiddenUnits inputSize参数。Name =gydF4y2Ba”“gydF4y2Ba;arg游戏。OutputMode = "序列"gydF4y2Ba结束gydF4y2Ba层。NumHiddenUnits = numHiddenUnits; layer.Name = args.Name; layer.OutputMode = args.OutputMode;

通过设置给图层一行描述gydF4y2Ba描述gydF4y2Ba层的属性。设置描述描述层的类型和它的大小。gydF4y2Ba

%设置层描述。gydF4y2Ba层。描述=gydF4y2Ba“窥孔LSTM与“gydF4y2Ba+ numHiddenUnits +gydF4y2Ba“隐藏单位”gydF4y2Ba;gydF4y2Ba

初始化可学的参数。初始化输入使用Glorot初始化权重。初始化反复使用正交初始化权重。初始化使用unit-forget-gate标准化偏差。这段代码使用辅助函数gydF4y2BainitializeGlorotgydF4y2Ba,gydF4y2BainitializeOrthogonalgydF4y2Ba,gydF4y2BainitializeUnitForgetGategydF4y2Ba。要访问这些功能,打开生活的脚本示例。初始化权值的更多信息,请参阅gydF4y2Ba初始化函数可学的参数模型gydF4y2Ba。gydF4y2Ba

注意,复发窥孔LSTM层的权重和标准LSTM层有不同的大小。窥孔LSTM层不需要周期性细胞候选人计算权重,权重是一个复发gydF4y2Ba3 * NumHiddenUnitsgydF4y2Ba——- - - - - -gydF4y2BaNumHiddenUnitsgydF4y2Ba数组中。gydF4y2Ba

%初始化权重和偏见。gydF4y2Ba深圳= [4 * numHiddenUnits inputSize];numOut = 4 * numHiddenUnits;numIn = inputSize;层。InputWeights = initializeGlorot(深圳、numOut numIn);深圳= [4 * numHiddenUnits numHiddenUnits];层。RecurrentWeights = initializeOrthogonal(sz); sz = [3*numHiddenUnits 1]; numOut = 3*numHiddenUnits; numIn = 1; layer.PeepholeWeights = initializeGlorot(sz,numOut,numIn); layer.Bias = initializeUnitForgetGate(numHiddenUnits);

初始化层状态参数。为了方便起见,使用gydF4y2BaresetStategydF4y2Ba函数中定义的部分。gydF4y2Ba

%初始化层。gydF4y2Ba层= resetState(层);gydF4y2Ba

把构造函数完成。gydF4y2Ba

函数gydF4y2Ba层= peepholeLSTMLayer (numHiddenUnits inputSize, args)gydF4y2Ba% PEEPHOLELSTMLAYER窥视孔LSTM一层一层% = PEEPHOLELSTMLAYER (numHiddenUnits inputSize) %创建一个窥视孔LSTM与指定数量的%隐藏层单元和输入通道。% % = peepholeLSTMLayer层(numHiddenUnits、inputSize Name = Value) %创建一个窥视孔LSTM层和指定额外的%选项使用一个或多个名称参数:% %的名字——层,名称指定为一个字符串。%默认是“”。% % OutputMode——输出模式,指定为一个%:%“序列”——输出整个序列数据的%。% %“最后”——步最后一次输出数据的%。%默认是“序列”。gydF4y2Ba%解析输入参数。gydF4y2Ba参数gydF4y2BanumHiddenUnits inputSize参数。Name =gydF4y2Ba”“gydF4y2Ba;arg游戏。OutputMode =gydF4y2Ba“序列”gydF4y2Ba;gydF4y2Ba结束gydF4y2Ba层。NumHiddenUnits = numHiddenUnits; layer.Name = args.Name; layer.OutputMode = args.OutputMode;%设置层描述。gydF4y2Ba层。描述=gydF4y2Ba“窥孔LSTM与“gydF4y2Ba+ numHiddenUnits +gydF4y2Ba“隐藏单位”gydF4y2Ba;gydF4y2Ba%初始化权重和偏见。gydF4y2Ba深圳= [4 * numHiddenUnits inputSize];numOut = 4 * numHiddenUnits;numIn = inputSize;层。InputWeights = initializeGlorot(深圳、numOut numIn);深圳= [4 * numHiddenUnits numHiddenUnits];层。RecurrentWeights = initializeOrthogonal(sz); sz = [3*numHiddenUnits 1]; numOut = 3*numHiddenUnits; numIn = 1; layer.PeepholeWeights = initializeGlorot(sz,numOut,numIn); layer.Bias = initializeUnitForgetGate(numHiddenUnits);%初始化层。gydF4y2Ba层= resetState(层);gydF4y2Ba结束gydF4y2Ba

使用此构造函数,该命令gydF4y2BaOutputMode peepholeLSTMLayer(200年,12日=“最后”,Name =“窥孔”)gydF4y2Ba创建一个窥视孔LSTM隐藏层200单元,输入的大小12,这个名字gydF4y2Ba“窥孔”gydF4y2Ba窥视孔的,输出最后一次一步LSTM操作。gydF4y2Ba

创建预测函数gydF4y2Ba

在预测创建层转发功能使用时间和培训时间。gydF4y2Ba

创建一个函数命名gydF4y2Ba预测gydF4y2Ba通过层传播数据的转发gydF4y2Ba预测的时间gydF4y2Ba并输出结果。gydF4y2Ba

的gydF4y2Ba预测gydF4y2Ba函数的语法取决于类型的层。gydF4y2Ba

  • Z =预测(层,X)gydF4y2Ba将输入数据转发gydF4y2BaXgydF4y2Ba通过层和输出结果gydF4y2BaZgydF4y2Ba,在那里gydF4y2Ba层gydF4y2Ba只有一个输入和一个输出。gydF4y2Ba

  • [Z,状态]=预测(层,X)gydF4y2Ba也输出更新的状态参数gydF4y2Ba状态gydF4y2Ba,在那里gydF4y2Ba层gydF4y2Ba只有一个状态参数。gydF4y2Ba

你可以调整层的语法与多个输入,多个输出,或多个状态参数:gydF4y2Ba

  • 与多个输入层,取代gydF4y2BaXgydF4y2Ba与gydF4y2BaX1,…, XNgydF4y2Ba,在那里gydF4y2BaNgydF4y2Ba输入的数量。的gydF4y2BaNumInputsgydF4y2Ba属性必须匹配gydF4y2BaNgydF4y2Ba。gydF4y2Ba

  • 与多个输出层,取代gydF4y2BaZgydF4y2Ba与gydF4y2BaZ1,…, ZM评选gydF4y2Ba,在那里gydF4y2Ba米gydF4y2Ba是输出的数量。的gydF4y2BaNumOutputsgydF4y2Ba属性必须匹配gydF4y2Ba米gydF4y2Ba。gydF4y2Ba

  • 层具有多个状态参数,替换gydF4y2Ba状态gydF4y2Ba与gydF4y2Bastate1,…, stateKgydF4y2Ba,在那里gydF4y2BaKgydF4y2Ba是状态参数的数量。gydF4y2Ba

提示gydF4y2Ba

如果输入层可以不同的数量,然后使用gydF4y2Ba变长度输入宗量gydF4y2Ba而不是gydF4y2BaX1,…, XNgydF4y2Ba。在这种情况下,gydF4y2Ba变长度输入宗量gydF4y2Ba是一个单元阵列的输入,在哪里gydF4y2Ba变长度输入宗量{我}gydF4y2Ba对应于gydF4y2Ba习gydF4y2Ba。gydF4y2Ba

如果输出的数量可以改变,那么使用gydF4y2BavarargoutgydF4y2Ba而不是gydF4y2BaZ1、…、锌gydF4y2Ba。在这种情况下,gydF4y2BavarargoutgydF4y2Ba是一个单元阵列的输出,在哪里gydF4y2Bavarargout {j}gydF4y2Ba对应于gydF4y2BaZjgydF4y2Ba。gydF4y2Ba

提示gydF4y2Ba

如果有一个自定义层gydF4y2BadlnetworkgydF4y2Ba为一种可习得的参数对象,然后在gydF4y2Ba预测gydF4y2Ba自定义功能层,使用gydF4y2Ba预测gydF4y2Ba函数gydF4y2BadlnetworkgydF4y2Ba。当你这样做,gydF4y2BadlnetworkgydF4y2Ba对象gydF4y2Ba预测gydF4y2Ba函数使用适当的预测层操作。gydF4y2Ba

因为一个窥视孔LSTM层只有一个输入,一个输出,和两个状态参数的语法gydF4y2Ba预测gydF4y2Ba窥孔LSTM层gydF4y2Ba[Z, hiddenState, cellState] =预测(层,X)gydF4y2Ba。gydF4y2Ba

默认情况下,该层使用gydF4y2Ba预测gydF4y2Ba函数在训练时间。使用不同的函数在训练时间,或保留值所需的向后一个自定义函数,您还必须创建一个函数命名gydF4y2Ba向前gydF4y2Ba。gydF4y2Ba

因为层继承自gydF4y2Bannet.layer.FormattablegydF4y2Ba层的输入格式gydF4y2BadlarraygydF4y2Ba对象和gydF4y2Ba预测gydF4y2Ba函数也必须输出数据格式gydF4y2BadlarraygydF4y2Ba对象。gydF4y2Ba

在时间步隐藏的状态gydF4y2BatgydF4y2Ba是由gydF4y2Ba

hgydF4y2Ba tgydF4y2Ba =gydF4y2Ba 双曲正切gydF4y2Ba (gydF4y2Ba cgydF4y2Ba tgydF4y2Ba )gydF4y2Ba ⊙gydF4y2Ba ogydF4y2Ba tgydF4y2Ba ,gydF4y2Ba

⊙gydF4y2Ba 表示阿达玛产品(element-wise向量的乘法)。gydF4y2Ba

在时间步细胞状态gydF4y2BatgydF4y2Ba是由gydF4y2Ba

cgydF4y2Ba tgydF4y2Ba =gydF4y2Ba ggydF4y2Ba tgydF4y2Ba ⊙gydF4y2Ba 我gydF4y2Ba tgydF4y2Ba +gydF4y2Ba cgydF4y2Ba tgydF4y2Ba −gydF4y2Ba 1gydF4y2Ba ⊙gydF4y2Ba fgydF4y2Ba tgydF4y2Ba 。gydF4y2Ba

下面的公式描述的组件在时间步gydF4y2BatgydF4y2Ba。gydF4y2Ba

组件gydF4y2Ba 公式gydF4y2Ba
输入门gydF4y2Ba 我gydF4y2Ba tgydF4y2Ba =gydF4y2Ba σgydF4y2Ba ggydF4y2Ba (gydF4y2Ba WgydF4y2Ba 我gydF4y2Ba xgydF4y2Ba tgydF4y2Ba +gydF4y2Ba RgydF4y2Ba 我gydF4y2Ba hgydF4y2Ba tgydF4y2Ba −gydF4y2Ba 1gydF4y2Ba +gydF4y2Ba pgydF4y2Ba 我gydF4y2Ba ⊙gydF4y2Ba cgydF4y2Ba tgydF4y2Ba −gydF4y2Ba 1gydF4y2Ba +gydF4y2Ba bgydF4y2Ba 我gydF4y2Ba )gydF4y2Ba
忘记门gydF4y2Ba fgydF4y2Ba tgydF4y2Ba =gydF4y2Ba σgydF4y2Ba ggydF4y2Ba (gydF4y2Ba WgydF4y2Ba fgydF4y2Ba xgydF4y2Ba tgydF4y2Ba +gydF4y2Ba RgydF4y2Ba fgydF4y2Ba hgydF4y2Ba tgydF4y2Ba −gydF4y2Ba 1gydF4y2Ba +gydF4y2Ba pgydF4y2Ba fgydF4y2Ba ⊙gydF4y2Ba cgydF4y2Ba tgydF4y2Ba −gydF4y2Ba 1gydF4y2Ba +gydF4y2Ba bgydF4y2Ba fgydF4y2Ba )gydF4y2Ba
细胞的候选人gydF4y2Ba ggydF4y2Ba tgydF4y2Ba =gydF4y2Ba σgydF4y2Ba cgydF4y2Ba (gydF4y2Ba WgydF4y2Ba ggydF4y2Ba xgydF4y2Ba tgydF4y2Ba +gydF4y2Ba RgydF4y2Ba hgydF4y2Ba hgydF4y2Ba tgydF4y2Ba −gydF4y2Ba 1gydF4y2Ba +gydF4y2Ba bgydF4y2Ba ggydF4y2Ba )gydF4y2Ba
输出门gydF4y2Ba ogydF4y2Ba tgydF4y2Ba =gydF4y2Ba σgydF4y2Ba ggydF4y2Ba (gydF4y2Ba WgydF4y2Ba ogydF4y2Ba xgydF4y2Ba tgydF4y2Ba +gydF4y2Ba RgydF4y2Ba ogydF4y2Ba hgydF4y2Ba tgydF4y2Ba −gydF4y2Ba 1gydF4y2Ba +gydF4y2Ba pgydF4y2Ba ogydF4y2Ba ⊙gydF4y2Ba cgydF4y2Ba tgydF4y2Ba +gydF4y2Ba bgydF4y2Ba ogydF4y2Ba )gydF4y2Ba

注意,输出门计算需要更新的细胞状态gydF4y2Ba cgydF4y2Ba tgydF4y2Ba 。gydF4y2Ba

在这些计算,gydF4y2Ba σgydF4y2Ba ggydF4y2Ba 和gydF4y2Ba σgydF4y2Ba cgydF4y2Ba 表示门和状态激活功能。的窥视孔LSTM层,使用乙状结肠和双曲正切函数作为门和状态激活函数,分别。gydF4y2Ba

实现此操作的gydF4y2Ba预测gydF4y2Ba函数。因为层不需要不同的培训或转发功能的内存值向后一个自定义函数,你可以删除gydF4y2Ba向前gydF4y2Ba函数的类文件。添加一个评论的函数,函数的语法解释道。gydF4y2Ba

提示gydF4y2Ba

如果你preallocate数组使用等功能gydF4y2Ba0gydF4y2Ba,那么你必须确保这些数组的数据类型是一致的输入层功能。创建一个数组相同数据类型的零作为另一个数组,使用gydF4y2Ba“喜欢”gydF4y2Ba选择gydF4y2Ba0gydF4y2Ba。例如,初始化一个数组大小的0gydF4y2Ba深圳gydF4y2Ba具有相同数据类型的数组gydF4y2BaXgydF4y2Ba,使用gydF4y2BaZ = 0(深圳,“喜欢”,X)gydF4y2Ba。gydF4y2Ba

函数gydF4y2Ba[Z, cellState, hiddenState] =预测(层,X)gydF4y2Ba%预测窥孔LSTM预测函数% [Z, hiddenState, cellState] =预测(层,X) %向前传播的数据通过一层一层并返回% X Z和更新后的隐藏和细胞状态输出。X %是dlarray格式“认知行为治疗”和Z是dlarray %格式“CB”或“认知行为治疗”,根据层OutputMode %属性。gydF4y2Ba%初始化顺序输出。gydF4y2BanumHiddenUnits = layer.NumHiddenUnits;finddim miniBatchSize =大小(X (X,gydF4y2Ba“B”gydF4y2Ba));finddim numTimeSteps =大小(X (X,gydF4y2Ba“T”gydF4y2Ba));gydF4y2Ba如果gydF4y2Ba层。OutputMode = =gydF4y2Ba“序列”gydF4y2BaZ = 0 (numHiddenUnits miniBatchSize numTimeSteps,gydF4y2Ba“喜欢”gydF4y2Ba,X);Z = dlarray (Z,gydF4y2Ba“认知行为治疗”gydF4y2Ba);gydF4y2Ba结束gydF4y2Ba%计算WX + b。gydF4y2BaX = stripdims (X);WX = pagemtimes (layer.InputWeights X) + layer.Bias;gydF4y2Ba%连接权重数组的索引。gydF4y2Baidx1 = 1: numHiddenUnits;idx2 = 1 + numHiddenUnits: 2 * numHiddenUnits;idx3 = 1 + 2 * numHiddenUnits: 3 * numHiddenUnits;idx4 = 1 + 3 * numHiddenUnits: 4 * numHiddenUnits;gydF4y2Ba%初始状态。gydF4y2BahiddenState = layer.HiddenState;cellState = layer.CellState;gydF4y2Ba随着时间的推移%循环步骤。gydF4y2Ba为gydF4y2Bat = 1: numTimeStepsgydF4y2Ba%计算R * h_ {t - 1}。gydF4y2BaRht =层。RecurrentWeights * hiddenState;%计算p * c_ {t - 1}。gydF4y2Ba皮克特人= layer.PeepholeWeights (idx1)。* cellState;pfct = layer.PeepholeWeights (idx2)。* cellState;gydF4y2Ba%计算。gydF4y2Ba它=乙状结肠(天气(idx1: t) + Rht (idx1,:) +皮克特人);英国《金融时报》=乙状结肠(天气(idx2: t) + Rht (idx2:) + pfct);gt =双曲正切(天气(idx3: t) + Rht (idx3:));gydF4y2Ba%计算使用更新的细胞状态。gydF4y2BacellState = gt。* + cellState。*英尺;poct = layer.PeepholeWeights (idx3)。* cellState;不=乙状结肠(天气(idx4: t) + Rht (idx4:) + poct);gydF4y2Ba%更新隐藏状态。gydF4y2BahiddenState =双曲正切(cellState)。*不;gydF4y2Ba%更新顺序输出。gydF4y2Ba如果gydF4y2Ba层。OutputMode = =gydF4y2Ba“序列”gydF4y2BaZ (:,:, t) = hiddenState;gydF4y2Ba结束gydF4y2Ba结束gydF4y2Ba%上次一步输出。gydF4y2Ba如果gydF4y2Ba层。OutputMode = =gydF4y2Ba“最后一次”gydF4y2BaZ = dlarray (hiddenStategydF4y2Ba“CB”gydF4y2Ba);gydF4y2Ba结束gydF4y2Ba结束gydF4y2Ba

因为gydF4y2Ba预测gydF4y2Ba函数只使用功能的支持金宝appgydF4y2BadlarraygydF4y2Ba对象,定义gydF4y2Ba落后的gydF4y2Ba函数是可选的。支持的功能列表金宝appgydF4y2BadlarraygydF4y2Ba对象,看到gydF4y2Ba与dlarray支持函数的列表金宝appgydF4y2Ba。gydF4y2Ba

创建重置状态函数gydF4y2Ba

当gydF4y2BaDAGNetworkgydF4y2Ba或gydF4y2BaSeriesNetworkgydF4y2Ba对象包含层与状态参数,您可以做出预测和更新层使用gydF4y2BapredictAndUpdateStategydF4y2Ba和gydF4y2BaclassifyAndUpdateStategydF4y2Ba功能。你可以重置网络状态使用gydF4y2BaresetStategydF4y2Ba函数。gydF4y2Ba

的gydF4y2BaresetStategydF4y2Ba函数gydF4y2BaDAGNetworkgydF4y2Ba,gydF4y2BaSeriesNetworkgydF4y2Ba,gydF4y2BadlnetworkgydF4y2Ba对象,默认情况下,在自定义层状态参数没有影响。定义层的行为gydF4y2BaresetStategydF4y2Ba网络对象的函数,定义可选层gydF4y2BaresetStategydF4y2Ba功能层,重置状态的参数定义。gydF4y2Ba

的gydF4y2BaresetStategydF4y2Ba函数必须有语法gydF4y2Ba层= resetState(层)gydF4y2Ba,返回层复位状态属性。gydF4y2Ba

创建一个函数命名gydF4y2BaresetStategydF4y2Ba重置层状态参数向量的零。gydF4y2Ba

函数gydF4y2Ba层= resetState(层)gydF4y2Ba% RESETSTATE重置一层一层状态% = RESETSTATE(层)重置%的国家属性层。gydF4y2BanumHiddenUnits = layer.NumHiddenUnits;层。HiddenState = 0 (numHiddenUnits, 1);层。CellState = 0 (numHiddenUnits, 1);gydF4y2Ba结束gydF4y2Ba

完成一层gydF4y2Ba

视图层完成类文件。gydF4y2Ba

classdefgydF4y2BapeepholeLSTMLayer < nnet.layer。层& nnet.layer.FormattablegydF4y2Ba% PEEPHOLELSTMLAYER窥视孔LSTM层gydF4y2Ba属性gydF4y2Ba%层属性。gydF4y2BaNumHiddenUnits OutputModegydF4y2Ba结束gydF4y2Ba属性gydF4y2Ba(可学的)gydF4y2Ba%层可学的参数。gydF4y2BaInputWeights RecurrentWeights PeepholeWeights偏见gydF4y2Ba结束gydF4y2Ba属性gydF4y2Ba(状态)gydF4y2Ba%层状态参数。gydF4y2BaHiddenState CellStategydF4y2Ba结束gydF4y2Ba方法gydF4y2Ba函数gydF4y2Ba层= peepholeLSTMLayer (numHiddenUnits inputSize, args)gydF4y2Ba% PEEPHOLELSTMLAYER窥视孔LSTM一层一层% = PEEPHOLELSTMLAYER (numHiddenUnits inputSize) %创建一个窥视孔LSTM与指定数量的%隐藏层单元和输入通道。% % = peepholeLSTMLayer层(numHiddenUnits、inputSize Name = Value) %创建一个窥视孔LSTM层和指定额外的%选项使用一个或多个名称参数:% %的名字——层,名称指定为一个字符串。%默认是“”。% % OutputMode——输出模式,指定为一个%:%“序列”——输出整个序列数据的%。% %“最后”——步最后一次输出数据的%。%默认是“序列”。gydF4y2Ba%解析输入参数。gydF4y2Ba参数gydF4y2BanumHiddenUnits inputSize参数。Name =gydF4y2Ba”“gydF4y2Ba;arg游戏。OutputMode =gydF4y2Ba“序列”gydF4y2Ba;gydF4y2Ba结束gydF4y2Ba层。NumHiddenUnits = numHiddenUnits; layer.Name = args.Name; layer.OutputMode = args.OutputMode;%设置层描述。gydF4y2Ba层。描述=gydF4y2Ba“窥孔LSTM与“gydF4y2Ba+ numHiddenUnits +gydF4y2Ba“隐藏单位”gydF4y2Ba;gydF4y2Ba%初始化权重和偏见。gydF4y2Ba深圳= [4 * numHiddenUnits inputSize];numOut = 4 * numHiddenUnits;numIn = inputSize;层。InputWeights = initializeGlorot(深圳、numOut numIn);深圳= [4 * numHiddenUnits numHiddenUnits];层。RecurrentWeights = initializeOrthogonal(sz); sz = [3*numHiddenUnits 1]; numOut = 3*numHiddenUnits; numIn = 1; layer.PeepholeWeights = initializeGlorot(sz,numOut,numIn); layer.Bias = initializeUnitForgetGate(numHiddenUnits);%初始化层。gydF4y2Ba层= resetState(层);gydF4y2Ba结束gydF4y2Ba函数gydF4y2Ba[Z, cellState, hiddenState] =预测(层,X)gydF4y2Ba%预测窥孔LSTM预测函数% [Z, hiddenState, cellState] =预测(层,X) %向前传播的数据通过一层一层并返回% X Z和更新后的隐藏和细胞状态输出。X %是dlarray格式“认知行为治疗”和Z是dlarray %格式“CB”或“认知行为治疗”,根据层OutputMode %属性。gydF4y2Ba%初始化顺序输出。gydF4y2BanumHiddenUnits = layer.NumHiddenUnits;finddim miniBatchSize =大小(X (X,gydF4y2Ba“B”gydF4y2Ba));finddim numTimeSteps =大小(X (X,gydF4y2Ba“T”gydF4y2Ba));gydF4y2Ba如果gydF4y2Ba层。OutputMode = =gydF4y2Ba“序列”gydF4y2BaZ = 0 (numHiddenUnits miniBatchSize numTimeSteps,gydF4y2Ba“喜欢”gydF4y2Ba,X);Z = dlarray (Z,gydF4y2Ba“认知行为治疗”gydF4y2Ba);gydF4y2Ba结束gydF4y2Ba%计算WX + b。gydF4y2BaX = stripdims (X);WX = pagemtimes (layer.InputWeights X) + layer.Bias;gydF4y2Ba%连接权重数组的索引。gydF4y2Baidx1 = 1: numHiddenUnits;idx2 = 1 + numHiddenUnits: 2 * numHiddenUnits;idx3 = 1 + 2 * numHiddenUnits: 3 * numHiddenUnits;idx4 = 1 + 3 * numHiddenUnits: 4 * numHiddenUnits;gydF4y2Ba%初始状态。gydF4y2BahiddenState = layer.HiddenState;cellState = layer.CellState;gydF4y2Ba随着时间的推移%循环步骤。gydF4y2Ba为gydF4y2Bat = 1: numTimeStepsgydF4y2Ba%计算R * h_ {t - 1}。gydF4y2BaRht =层。RecurrentWeights * hiddenState;%计算p * c_ {t - 1}。gydF4y2Ba皮克特人= layer.PeepholeWeights (idx1)。* cellState;pfct = layer.PeepholeWeights (idx2)。* cellState;gydF4y2Ba%计算。gydF4y2Ba它=乙状结肠(天气(idx1: t) + Rht (idx1,:) +皮克特人);英国《金融时报》=乙状结肠(天气(idx2: t) + Rht (idx2:) + pfct);gt =双曲正切(天气(idx3: t) + Rht (idx3:));gydF4y2Ba%计算使用更新的细胞状态。gydF4y2BacellState = gt。* + cellState。*英尺;poct = layer.PeepholeWeights (idx3)。* cellState;不=乙状结肠(天气(idx4: t) + Rht (idx4:) + poct);gydF4y2Ba%更新隐藏状态。gydF4y2BahiddenState =双曲正切(cellState)。*不;gydF4y2Ba%更新顺序输出。gydF4y2Ba如果gydF4y2Ba层。OutputMode = =gydF4y2Ba“序列”gydF4y2BaZ (:,:, t) = hiddenState;gydF4y2Ba结束gydF4y2Ba结束gydF4y2Ba%上次一步输出。gydF4y2Ba如果gydF4y2Ba层。OutputMode = =gydF4y2Ba“最后一次”gydF4y2BaZ = dlarray (hiddenStategydF4y2Ba“CB”gydF4y2Ba);gydF4y2Ba结束gydF4y2Ba结束gydF4y2Ba函数gydF4y2Ba层= resetState(层)gydF4y2Ba% RESETSTATE重置一层一层状态% = RESETSTATE(层)重置%的国家属性层。gydF4y2BanumHiddenUnits = layer.NumHiddenUnits;层。HiddenState = 0 (numHiddenUnits, 1);层。CellState = 0 (numHiddenUnits, 1);gydF4y2Ba结束gydF4y2Ba结束gydF4y2Ba结束gydF4y2Ba

GPU的兼容性gydF4y2Ba

如果层转发功能完全支持金宝appgydF4y2BadlarraygydF4y2Ba对象,则GPU兼容层。否则,必须支持GPU兼容,层功能的输入并返回输出类型金宝appgydF4y2BagpuArraygydF4y2Ba(并行计算工具箱)gydF4y2Ba。gydF4y2Ba

许多MATLAB内置函数的支持金宝appgydF4y2BagpuArraygydF4y2Ba(并行计算工具箱)gydF4y2Ba和gydF4y2BadlarraygydF4y2Ba输入参数。支持的功能列表金宝appgydF4y2BadlarraygydF4y2Ba对象,看到gydF4y2Ba与dlarray支持函数的列表金宝appgydF4y2Ba。对GPU执行的函数的列表,看看gydF4y2Ba运行在GPU MATLAB函数gydF4y2Ba(并行计算工具箱)gydF4y2Ba。gydF4y2Ba使用GPU深度学习,你也必须有一个支持GPU设备。金宝app支持设备的信息,请参阅金宝appgydF4y2BaGPU的金宝app支持版本gydF4y2Ba(并行计算工具箱)gydF4y2Ba。gydF4y2Ba在MATLAB与gpu的更多信息,见gydF4y2Ba在MATLAB GPU计算gydF4y2Ba(并行计算工具箱)gydF4y2Ba。gydF4y2Ba

在这个例子中,使用MATLAB函数gydF4y2Ba预测gydF4y2Ba所有的支金宝app持gydF4y2BadlarraygydF4y2Ba对象,所以GPU兼容层。gydF4y2Ba

包括自定义层网络gydF4y2Ba

您可以使用一个自定义层以同样的方式与其他层深度学习工具。创建和训练序列分类网络使用前面创建的窥孔LSTM层。gydF4y2Ba

负荷训练数据的例子。gydF4y2Ba

[XTrain, TTrain] = japaneseVowelsTrainData;gydF4y2Ba

定义网络体系结构。创建一个层数组包含一个窥视孔LSTM层。gydF4y2Ba

inputSize = 12;numHiddenUnits = 100;numClasses = 9;层= [sequenceInputLayer inputSize peepholeLSTMLayer (numHiddenUnits、inputSize OutputMode =gydF4y2Ba“最后一次”gydF4y2Ba)fullyConnectedLayer (numClasses) softmaxLayer classificationLayer];gydF4y2Ba

指定培训方案和培训网络。火车与mini-batch 27和left-pad数据的大小。gydF4y2Ba

选择= trainingOptions (gydF4y2Ba“亚当”gydF4y2BaSequencePaddingDirection MiniBatchSize = 27日=gydF4y2Ba“左”gydF4y2Ba);网= trainNetwork (XTrain、TTrain层,选择);gydF4y2Ba
培训在单CPU。| = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = | | | |时代迭代时间| Mini-batch | Mini-batch |基地学习| | | | (hh: mm: ss) | | |损失精度率| | = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = | | 1 | 1 | 00:00:01 | 3.70% | 2.2060 | 0.0010 | | 5 | 50 | 00:00:26 | 92.59% | 0.5917 | 0.0010 | | 100 | | 00:00:45 | 92.59% | 0.2182 | 0.0010 | | 150 | | 00:01:01 | 100.00% | 0.0588 | 0.0010 | | 200 | | 00:01:17 | 96.30% | 0.0872 | 0.0010 | | 25 | 250 | 00:01:37 | 100.00% | 0.0329 | 0.0010 | | 300 | | 00:01:54 | 100.00% | 0.0141 | 0.0010 | | = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = |培训完成:马克思时代完成。gydF4y2Ba

评估网络性能预测新数据和计算的准确性。gydF4y2Ba

(XTest, tt) = japaneseVowelsTestData;欧美=分类(净、XTest MiniBatchSize = 27);精度=意味着(欧美= = tt)gydF4y2Ba
精度= 0.8703gydF4y2Ba

引用gydF4y2Ba

[1]·Greff,克劳斯,Rupesh k·斯利瓦斯塔瓦,Jan Koutnik Bas r . Steunebrink,。的Jurgen。施密德胡贝尔表示“LSTM:搜索太空漫游。”gydF4y2BaIEEE神经网络和学习系统gydF4y2Ba28日,没有。10 (2016):2222 - 2232。gydF4y2Ba

另请参阅gydF4y2Ba

|gydF4y2Ba|gydF4y2Ba|gydF4y2Ba|gydF4y2Ba|gydF4y2Ba|gydF4y2Ba|gydF4y2Ba|gydF4y2Ba|gydF4y2Ba

相关的话题gydF4y2Ba