LongShortTermMemoryLayer

LongShortTermMemoryLayer[n]

表示一个可训练的循环层,接受一个向量序列,产生一个由大小为 n 的向量组成的序列.

LongShortTermMemoryLayer[n,opts]

包含权重和其他参数的选项.

更多信息和选项

  • LongShortTermMemoryLayer[n] 表示一个网络,接受表示向量序列的输入矩阵并输出同样长度的序列.
  • 输入序列的每个元素是一个大小为 k 的向量,输出序列的每个元素是一个大小为 n 的向量.
  • NetGraphNetChain 等中, 输入向量的大小 k 通常自动由推断而得.
  • LongShortTermMemoryLayer[n] 所表示的网络的输入端口和输出端口为:
  • "Input"大小为 k 的向量组成的序列
    "Output"大小为 n 的向量组成的序列
  • 给定输入序列 {x1,x2,,xT},LSTM 利用下列循环关系式输出状态序列 {s1,s2,,sT}
  • 输入门 (input gate)it=LogisticSigmoid[Wix.xt+Wis.st-1+bi]
    输出门 (output gate)ot=LogisticSigmoid[Wox.xt+Wos.st-1+bo]
    遗忘门 (forget gate)ft=LogisticSigmoid[Wfx.xt+Wfs.st-1+bf]
    记忆门 (memory gate)mt=Tanh[Wmx.xt+Wms.st-1+bm]
    单元状态 (cell state)ct=ft*ct-1+it*mt
    状态 (state)st=ot*Tanh[ct]
  • LongShortTermMemoryLayer[n] 有下列状态端口:
  • "State"大小为 n 的向量
    "CellState"大小为 n 的向量
  • NetGraph 中,可以使用形式为 src->NetPort[layer,"state"] 的连接提供 LongShortTermMemoryLayer"State""CellState" 的初始值,对应于循环关系式中的 s0c0. 缺省的初始值为零向量.
  • NetStateObject 可以用来创建一个网络,该网络将记住当网络应用于输入时 LongShortTermMemoryLayer 的状态更新后的值.
  • NetGraph 中,可以使用形式为 NetPort[layer,"state"]->dst 的连接获取 LongShortTermMemoryLayer"State""CellState" 的终值,它对应于循环关系中的 sTcT.
  • 在大小为 k 的向量上操作的初始化过的 LongShortTermMemoryLayer[] 含有下列可训练的数组:
  • "InputGateInputWeights"Wix大小为 n×k 的矩阵
    "InputGateStateWeights"Wis大小为 n×n 的矩阵
    "InputGateBiases"bi大小为 n 的向量
    "OutputGateInputWeights"Wox大小为 n×k 的矩阵
    "OutputGateStateWeights"Wos大小为 n×n 的矩阵
    "OutputGateBiases"bo大小为 n 的向量
    "ForgetGateInputWeights"Wfx大小为 n×k 的矩阵
    "ForgetGateStateWeights"Wfs大小为 n×n 的矩阵
    "ForgetGateBiases"bf大小为 n 的向量
    "MemoryGateInputWeights"Wmx大小为 n×k 的矩阵
    "MemoryGateStateWeights"Wms大小为 n×n 的矩阵
    "MemoryGateBiases"bm大小为 n 的向量
  • LongShortTermMemoryLayer[n,opts] 中,可以用格式为 "array"->value 的规则把初始值赋予可训练数组.
  • 可包括以下训练参数:
  • "Dropout" Nonedropout 规则,其中,根据概率将单元设为零
    LearningRateMultipliersAutomatic可训练数组的学习率乘子
  • 指定 "Dropout"->None 将禁止在训练时进行 dropout.
  • 指定 "Dropout"->p 将以 dropout 概率 p 应用自动选择的 dropout 方法.
  • 指定 "Dropout"->{"method1"->p1,"method2"->p2,} 可用来按相应的 dropout 概率组合不同的 dropout 方法. 可能的方法包括:
  • "VariationalWeights"dropout 应用于权重矩阵间的循环连接(默认)
    "VariationalInput"对来自输入的门贡献 (gate contribution) 应用 dropout,在序列中的每一步使用同样模式的单元
    "VariationalState"对来自前面状态的门贡献 (gate contribution) 应用 dropout,在序列中的每一步使用同样模式的单元
    "StateUpdate"在加到前面的状态之前,对状态更新向量应用 dropout,在序列中的每一步使用不同模式的单元
  • dropout 方法 "VariationalInput""VariationalState" 是基于 Gal et al. 2016 方法,其中, "StateUpdate" 是基于 Semeniuta et al. 2016 方法,"VariationalWeights" 是基于 Merity et al. 2017 方法.
  • LongShortTermMemoryLayer[n,"Input"->shape] 允许指定输入的形状. shape 的可能的形式为:
  • NetEncoder[]生成向量序列的编码器
    {len,k}len 个长度为 k 的向量组成的序列
    {len,Automatic}len 个向量组成的序列,其中向量的长度由推断而得
    {"Varying",k}不同数量的向量,每个向量的长度为 k
    {"Varying",Automatic}不同数量的向量,每个向量的长度由推断而得
  • NumericArray 作为输入时,输出将是 NumericArray.
  • Options[LongShortTermMemoryLayer] 给出构建网络层的默认选项列表. Options[LongShortTermMemoryLayer[]] 给出在某些数据上运行网络层的默认选项列表.
  • Information[LongShortTermMemoryLayer[]] 给出关于网络层的报告.
  • Information[LongShortTermMemoryLayer[],prop] 给出 LongShortTermMemoryLayer[] 的属性 prop 的值. 可能的属性NetGraph 相同.

范例

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

基本范例  (2)

创建一个 LongShortTermMemoryLayer,产生由长度为 3 的向量组成的序列:

创建一个随机初始化的 LongShortTermMemoryLayer,接受由长度为 2 的向量组成的序列,产生由长度为 3 的向量组成的序列:

对输入序列应用该层:

范围  (4)

创建一个随机初始化的 LongShortTermMemoryLayer,接受一个字符串, 产生由长度为 2 的向量组成的序列:

对输入字符串应用该层:

将该层逐项作用于一批输入:

创建一个随机初始化的网络,接受由长度为 2 的向量组成的序列,产生一个长度为 3 的向量:

对输入应用该层:

将该层逐项作用于一批输入:

创建一个 NetGraph,允许设置 LongShortTermMemoryLayer 初始状态和单元状态 (cell state):

对一些数据应用该图:

创建一个 NetGraph,允许获取 LongShortTermMemoryLayer 的终态和单元状态:

终态是输出序列的最后一个元素:

选项  (2)

"Dropout"  (2)

创建一个 LongShortTermMemoryLayer,同时指定 dropout 方法:

创建一个随机初始化的、具有指定 dropout 概率的 LongShortTermMemoryLayer

量序列上运行该层:

在运行过程中 dropout 没有任何影响:

NetEvaluationMode 来强制 dropout 的训练行为:

对同样的输入进行多次运行会给出不同的结果:

应用  (2)

产生训练数据,由描述两位数相加及其相应数值结果的字符串组成:

创建一个网络,使用堆叠的 LongShortTermMemoryLayer 读取输入字符串并预测数值结果:

训练该网络:

对输入列表应用训练过的网络:

基于含有 x 和 y 的字符串创建训练数据,通过比较 x 和 y 的数量得出 LessGreaterEqual. 训练数据由最长为 8 的所有可能的字符串组成:

创建含有 LongShortTermMemoryLayer 的网络,读入一个字符串,预测是 LessGreater 还是 Equal

训练该网络:

对输入列表应用训练过的网络:

在整个训练集上测量准确度:

属性和关系  (1)

NetStateObject 可用来创建一个能记住 LongShortTermMemoryLayer 的状态的网络:

每次计算都将改变储存在 NetStateObject 中的状态:

Wolfram Research (2017),LongShortTermMemoryLayer,Wolfram 语言函数,https://reference.wolfram.com/language/ref/LongShortTermMemoryLayer.html (更新于 2020 年).

文本

Wolfram Research (2017),LongShortTermMemoryLayer,Wolfram 语言函数,https://reference.wolfram.com/language/ref/LongShortTermMemoryLayer.html (更新于 2020 年).

CMS

Wolfram 语言. 2017. "LongShortTermMemoryLayer." Wolfram 语言与系统参考资料中心. Wolfram Research. 最新版本 2020. https://reference.wolfram.com/language/ref/LongShortTermMemoryLayer.html.

APA

Wolfram 语言. (2017). LongShortTermMemoryLayer. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/LongShortTermMemoryLayer.html 年

BibTeX

@misc{reference.wolfram_2024_longshorttermmemorylayer, author="Wolfram Research", title="{LongShortTermMemoryLayer}", year="2020", howpublished="\url{https://reference.wolfram.com/language/ref/LongShortTermMemoryLayer.html}", note=[Accessed: 22-November-2024 ]}

BibLaTeX

@online{reference.wolfram_2024_longshorttermmemorylayer, organization={Wolfram Research}, title={LongShortTermMemoryLayer}, year={2020}, url={https://reference.wolfram.com/language/ref/LongShortTermMemoryLayer.html}, note=[Accessed: 22-November-2024 ]}