當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。