BasicRecurrentLayer
表示可培训的循环层,它接受向量序列并产生大小为 n 的向量序列.
BasicRecurrentLayer[n,opts]
包括初始权重和其他参数的选项.
更多信息和选项
- BasicRecurrentLayer[n] 表示一个网络,接受表示向量序列的输入矩阵并输出相同长度的序列.
- 输入序列的每个元素是一个大小为 k 的向量,输出序列的每个元素是一个大小为 n 的向量.
- 通常从 NetGraph、NetChain 等中自动推断得出输入向量的大小 k.
- BasicRecurrentLayer[n] 所表示的网络的输入端口和输出端口为:
-
"Input" 大小为 k 的向量组成的序列 "Output" 大小为 n 的向量组成的序列 - 给定输入序列 {x1,x2,…,xT},BasicRecurrentLayer 输出状态序列 {s1,s2,…,sT},其中 st=Tanh[wi.xt+ws.st-1+b].
- BasicRecurrentLayer[n] 有一个状态端口 "State",它是一个大小为 n 的向量.
- 在 NetGraph 中,形式为 src->NetPort[layer,"State"] 的连接可用于为 BasicRecurrentLayer 的状态提供初始值,在循环关系中对应于 s0. 默认初始值是零向量.
- 在 NetGraph 中,形式为 NetPort[layer,"State"]->dst 的连接可用于获取 BasicRecurrentLayer 状态的最终值,在循环关系中对应于 sT.
- NetStateObject 可用于创建一个会记住 BasicRecurrentLayer(在神经网络用于输入时更新)状态值得神经网络.
- 操作于大小为 k 的向量上的初始化的 BasicRecurrentLayer[…] 包含以下可培训的数组:
-
"InputWeights" Wx 大小为 n×k 的矩阵 "StateWeights" Ws 大小为 n×n 的矩阵 "Biases" b 大小为 n 的向量 - 在 BasicRecurrentLayer[n,opts] 中,可使用形式为 "array"->value 的规则对可培训数组给出初始值.
- 可包括以下训练参数:
-
"Dropout" None dropout 规则,其中,根据概率将单元设为零 LearningRateMultipliers Automatic 可训练数组的学习率乘子 - 指定 "Dropout"->None 在培训时禁用 Dropout.
- 指定 "Dropout"->p 使用自动选择的 Dropout 方法让 Dropout 概率为 p.
- 指定 "Dropout"->{"method1"->p1,"method2"->p2,…} 可被用于组合带有相应退出概率的退出的指定方法. 可能的方法包括:
-
"VariationalWeights" 将 dropout 应用于加权矩阵间的 recurrent 连接(默认) "VariationalInput" 将 dropout 应用于输入的 gate contributions,在每个序列步骤中使用相同的单位模式 "VariationalState" 将 dropout 应用于前一状态的 gate contributions,在每个序列步骤中使用同样的单位模式 "StateUpdate" 在添加到前一个状态之前,将 dropout 应用于状态更新向量,在每个序列步骤中使用不同的单位模式 - dropout 方法 "VariationalInput" 和 "VariationalState" 基于 Gal 等人于 2016 年提出的方法,而 "StateUpdate" 基于 Semeniuta 等人于 2016 年提出的方法,"VariationalWeights" 基于 Merity 等人于 2017 年提出的方法.
- BasicRecurrentLayer[n,"Input"->shape] 允许指定输入的形式. shape 的可能的形式有:
-
NetEncoder[…] 编码器产生向量序列 {len,k} 长度为 k 的 len 向量序列 {len,Automatic} len 向量序列,其长度是被推断的 {"Varying",k} 向量的不同数目,每个长度为 k {"Varying",Automatic} 向量的不同数目,每个长度为被推断的长度 - 如果给出 NumericArray 作为输入,那么输出也将是一个 NumericArray.
- Options[BasicRecurrentLayer] 给出构建网络层的默认选项列表. Options[BasicRecurrentLayer[…]] 给出在某些数据上运行网络层的默认选项列表.
- Information[BasicRecurrentLayer[…]] 给出关于网络层的报告.
- Information[BasicRecurrentLayer[…],prop] 给出 BasicRecurrentLayer[…] 的属性 prop 的值. 可能的属性与 NetGraph 相同.
范例
打开所有单元关闭所有单元基本范例 (2)
创建一个 BasicRecurrentLayer,产生长度为 3 的向量序列:
创建一个随机初始化的 BasicRecurrentLayer,它接受长度为 2 的向量并产生长度为 3 的向量序列:
范围 (4)
Ports (4)
创建一个随机初始化的 BasicRecurrentLayer,它接受字符串并产生长度为 2 的向量序列:
创建一个随机初始化的神经网络并接受长度为 2 的向量序列,产生一长度为 3 的向量:
创建一个 NetGraph,它允许设置 BasicRecurrentLayer 的初始状态:
创建一个 NetGraph,它允许获取 BasicRecurrentLayer 最后状态:
选项 (2)
"Dropout" (2)
创建一个 BasicRecurrentLayer,其中指定退出的方法:
创建一个带有指定退出概率的随机初始化的 BasicRecurrentLayer:
使用 NetEvaluationMode 强迫退出的培训行为:
应用 (2)
使用堆栈的 BasicRecurrentLayer 层创建网络,它读取输入字符串并预测数值结果:
创建基于包含 x 和 y 的,或者比较 x 和 y 数目的 Less, Greater 或 Equal 的培训数据. 培训数据包含所有可能的句子长度不超过 8:
创建一个包含 BasicRecurrentLayer 的网络,读取输入字符串并预测 Less、Greater 或 Equal 之一:
属性和关系 (1)
NetStateObject 可用于创建记住 BasicRecurrentLayer 的神经网络:
每次计算会修改存于 NetStateObject 的状态:
文本
Wolfram Research (2017),BasicRecurrentLayer,Wolfram 语言函数,https://reference.wolfram.com/language/ref/BasicRecurrentLayer.html (更新于 2020 年).
CMS
Wolfram 语言. 2017. "BasicRecurrentLayer." Wolfram 语言与系统参考资料中心. Wolfram Research. 最新版本 2020. https://reference.wolfram.com/language/ref/BasicRecurrentLayer.html.
APA
Wolfram 语言. (2017). BasicRecurrentLayer. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/BasicRecurrentLayer.html 年