当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python mxnet.gluon.rnn.LSTM用法及代码示例


用法:

class mxnet.gluon.rnn.LSTM(hidden_size, num_layers=1, layout='TNC', dropout=0, bidirectional=False, input_size=0, i2h_weight_initializer=None, h2h_weight_initializer=None, i2h_bias_initializer='zeros', h2h_bias_initializer='zeros', projection_size=None, h2r_weight_initializer=None, state_clip_min=None, state_clip_max=None, state_clip_nan=False, dtype='float32', **kwargs)

参数

  • hidden_size(int) - 隐藏状态 h 的特征数量。
  • num_layers(int, default 1) - 循环层数。
  • layout(str, default 'TNC') - 输入和输出张量的格式。 T、N 和 C 分别代表序列长度、批量大小和特征维度。
  • dropout(float, default 0) - 如果非零,则在除最后一层之外的每个 RNN 层的输出上引入一个 dropout 层。
  • bidirectional(bool, default False) - 如果True, 成为一个双向 RNN。
  • i2h_weight_initializer(str or Initializer) - 输入权重矩阵的初始化器,用于输入的线性变换。
  • h2h_weight_initializer(str or Initializer) - 循环权重矩阵的初始化器,用于循环状态的线性变换。
  • i2h_bias_initializer(str or Initializer, default 'lstmbias') - 偏置向量的初始化器。默认情况下,遗忘门的偏置初始化为 1,而所有其他偏置初始化为零。
  • h2h_bias_initializer(str or Initializer) - 偏置向量的初始化器。
  • projection_size(int, default None) - 投影后的特征数。
  • h2r_weight_initializer(str or Initializer, default None) - 投影循环权重矩阵的初始化器,用于循环状态到投影空间的线性变换。
  • state_clip_min(float or None, default None) - LSTM 状态的最小剪辑值。此选项必须与state_clip_max 一起使用。如果为 None,则不应用剪裁。
  • state_clip_max(float or None, default None) - LSTM 状态的最大剪辑值。此选项必须与state_clip_min 一起使用。如果为 None,则不应用剪裁。
  • state_clip_nan(boolean, default False) - 是否通过将 NaN 裁剪为最小/最大值来阻止其在状态中传播。如果未指定裁剪范围,则忽略此选项。
  • dtype(str, default 'float32') - 类型初始化参数和默认状态为
  • input_size(int, default 0) - 输入 x 中预期特征的数量。如果未指定,将从输入推断。
  • prefix(str or None) - 这个前缀Block.
  • params(ParameterDict或者None) - 为此共享参数Block.

基础:mxnet.gluon.rnn.rnn_layer._RNNLayer

将多层长短期 memory (LSTM) RNN 应用于输入序列。

对于输入序列中的每个元素,每一层计算以下函数:

其中 是时间t的隐藏状态, 是时间t的单元状态, 是前一层在时间t 的隐藏状态层, 分别是输入、遗忘、单元和输出门。

输入:
  • data: 输入带形状的张量(sequence_length, batch_size, input_size)layout是“TNC”。对于其他布局,使用 transpose() 运算符相应地排列尺寸,这会增加性能开销。考虑在数据批处理步骤中在 TNC 布局中创建批处理。
  • states:两个初始循环状态张量的列表。每个都有形状(num_layers, batch_size, num_hidden).如果bidirectional为真,形状将改为(2*num_layers, batch_size, num_hidden).如果states为无,零将用作默认开始状态。
输出:
  • out: 输出具有形状的张量(sequence_length, batch_size, num_hidden)layout是“TNC”。如果bidirectional为真,输出形状将改为(sequence_length, batch_size, 2*num_hidden)
  • out_states:两个输出循环状态张量的列表,其形状与states.如果states是无out_states不会被退回。

例子

>>> layer = mx.gluon.rnn.LSTM(100, 3)
>>> layer.initialize()
>>> input = mx.nd.random.uniform(shape=(5, 3, 10))
>>> # by default zeros are used as begin state
>>> output = layer(input)
>>> # manually specify begin state.
>>> h0 = mx.nd.random.uniform(shape=(3, 3, 100))
>>> c0 = mx.nd.random.uniform(shape=(3, 3, 100))
>>> output, hn = layer(input, [h0, c0])

相关用法


注:本文由纯净天空筛选整理自apache.org大神的英文原创作品 mxnet.gluon.rnn.LSTM。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。