LSTM

LSTM - 22

版本

  • 名稱: LSTM (GitHub)

  • : main

  • since_version: 22

  • function: False

  • 支援等級: SupportType.COMMON

  • 形狀推斷: True

此運算符版本自 22 版以來可用。

摘要

計算單層 LSTM。此運算符通常透過一些自定義實現(如 CuDNN)來支援。

符號

  • X - 輸入張量

  • i - 輸入閘

  • o - 輸出閘

  • f - 遺忘閘

  • c - 細胞閘

  • t - 時間步長(t-1 表示上一個時間步長)

  • W[iofc] - 輸入、輸出、遺忘和細胞閘的 W 參數權重矩陣

  • R[iofc] - 輸入、輸出、遺忘和細胞閘的 R 遞迴權重矩陣

  • Wb[iofc] - 輸入、輸出、遺忘和細胞閘的 W 偏置向量

  • Rb[iofc] - 輸入、輸出、遺忘和細胞閘的 R 偏置向量

  • P[iof] - 輸入、輸出和遺忘閘的 P 窺視孔權重向量

  • WB[iofc] - 反向輸入、輸出、遺忘和細胞閘的 W 參數權重矩陣

  • RB[iofc] - 反向輸入、輸出、遺忘和細胞閘的 R 遞迴權重矩陣

  • WBb[iofc] - 反向輸入、輸出、遺忘和細胞閘的 W 偏置向量

  • RBb[iofc] - 反向輸入、輸出、遺忘和細胞閘的 R 偏置向量

  • PB[iof] - 反向輸入、輸出和遺忘閘的 P 窺視孔權重向量

  • H - 隱藏狀態

  • num_directions - 如果方向 == 雙向則為 2,否則為 1

激活函數

  • Relu(x) - max(0, x)

  • Tanh(x) - (1 - e^{-2x})/(1 + e^{-2x})

  • Sigmoid(x) - 1/(1 + e^{-x})

注意:以下為可選

  • Affine(x) - alpha*x + beta

  • LeakyRelu(x) - 如果 x >= 0,則為 x,否則為 alpha * x

  • ThresholdedRelu(x) - 如果 x >= alpha,則為 x,否則為 0

  • ScaledTanh(x) - alphaTanh(betax)

  • HardSigmoid(x) - min(max(alpha*x + beta, 0), 1)

  • Elu(x) - 如果 x >= 0,則為 x,否則為 alpha*(e^x - 1)

  • Softsign(x) - x/(1 + |x|)

  • Softplus(x) - log(1 + e^x)

方程式(預設:f=Sigmoid、g=Tanh、h=Tanh)

  • it = f(Xt*(Wi^T) + Ht-1*(Ri^T) + Pi (.) Ct-1 + Wbi + Rbi)

  • ft = f(Xt*(Wf^T) + Ht-1*(Rf^T) + Pf (.) Ct-1 + Wbf + Rbf)

  • ct = g(Xt*(Wc^T) + Ht-1*(Rc^T) + Wbc + Rbc)

  • Ct = ft (.) Ct-1 + it (.) ct

  • ot = f(Xt*(Wo^T) + Ht-1*(Ro^T) + Po (.) Ct + Wbo + Rbo)

  • Ht = ot (.) h(Ct) 此運算符具有可選輸入/輸出。 關於可選引數的表示,請參閱 ONNX IR 以獲取更多詳細資訊。 可以使用空字串代替實際引數的名稱,以指示遺失的引數。 尾部的可選引數(後面沒有跟著存在的引數的引數)也可以簡單地省略。

屬性

  • activation_alpha - FLOATS :

    某些激活函數使用的可選縮放值。 這些值以激活函數的順序使用,例如 LSTM 中的 (f, g, h)。 預設值與對應的 ONNX 運算符相同。 例如,對於 LeakyRelu,預設 alpha 為 0.01。

  • activation_beta - FLOATS :

    某些激活函數使用的可選縮放值。 這些值以激活函數的順序使用,例如 LSTM 中的 (f, g, h)。 預設值與對應的 ONNX 運算符相同。

  • activations - STRINGS :

    用於輸入、輸出、遺忘、細胞和隱藏的 3 個(如果為雙向,則為 6 個)激活函數的清單。 激活函數必須是上述指定的激活函數之一。 可選:如果未指定,請參閱預設方程式。

  • clip - FLOAT :

    細胞剪切閾值。 剪切將張量的元素限制在 [-閾值, +閾值] 的範圍內,並應用於激活的輸入。 如果未指定,則不剪切。

  • direction - STRING(預設為 'forward'

    指定 RNN 是向前、反向還是雙向。 必須是 forward(預設)、reverse 或 bidirectional 之一。

  • hidden_size - INT :

    隱藏層中的神經元數量

  • input_forget - INT(預設為 '0'

    如果為 1,則將輸入和遺忘閘耦合。

  • layout - INT(預設為 '0'

    輸入 X、initial_h、initial_c 和輸出 Y、Y_h、Y_c 的形狀格式。 如果為 0,則預期以下形狀:X.shape = [seq_length, batch_size, input_size],Y.shape = [seq_length, num_directions, batch_size, hidden_size],initial_h.shape = Y_h.shape = initial_c.shape = Y_c.shape = [num_directions, batch_size, hidden_size]。 如果為 1,則預期以下形狀:X.shape = [batch_size, seq_length, input_size],Y.shape = [batch_size, seq_length, num_directions, hidden_size],initial_h.shape = Y_h.shape = initial_c.shape = Y_c.shape = [batch_size, num_directions, hidden_size]。

輸入

介於 3 到 8 個輸入之間。

  • X (異質) - T

    輸入序列打包(並可能填充)成一個 3 維張量,形狀為 [seq_length, batch_size, input_size]

  • W (異質) - T

    閘的權重張量。沿維度 0 連接 W[iofc]WB[iofc](如果為雙向)。張量的形狀為 [num_directions, 4*hidden_size, input_size]

  • R (異質) - T

    遞迴權重張量。沿維度 0 連接 R[iofc]RB[iofc](如果為雙向)。此張量的形狀為 [num_directions, 4*hidden_size, hidden_size]

  • B (可選,異質) - T

    輸入閘的偏置張量。沿維度 0 連接 [Wb[iofc], Rb[iofc]][WBb[iofc], RBb[iofc]](如果為雙向)。此張量的形狀為 [num_directions, 8*hidden_size]。 可選:如果未指定,則假定為 0。

  • sequence_lens (可選,異質) - T1

    指定批次中序列長度的可選張量。如果未指定,則假定批次中的所有序列的長度為 seq_length。其形狀為 [batch_size]

  • initial_h (可選,異質) - T

    隱藏層的可選初始值。若未指定,則假設為 0。其形狀為 [num_directions, batch_size, hidden_size]

  • initial_c (可選,異質) - T

    記憶單元的可選初始值。若未指定,則假設為 0。其形狀為 [num_directions, batch_size, hidden_size]

  • P (可選,異質) - T

    窺視孔的權重張量。沿著維度 0 連接 P[iof]PB[iof] (若為雙向)。其形狀為 [num_directions, 3*hidde_size]。可選:若未指定,則假設為 0。

輸出

介於 0 和 3 個輸出之間。

  • Y (可選,異質) - T

    一個張量,串接了隱藏層所有中間輸出值。其形狀為 [seq_length, num_directions, batch_size, hidden_size]

  • Y_h (可選,異質) - T

    隱藏層的最後輸出值。其形狀為 [num_directions, batch_size, hidden_size]

  • Y_c (可選,異質) - T

    記憶單元的最後輸出值。其形狀為 [num_directions, batch_size, hidden_size]

類型約束

  • T 為 ( tensor(bfloat16), tensor(double), tensor(float), tensor(float16) )

    將輸入和輸出類型限制為浮點數張量。

  • T1 為 ( tensor(int32) )

    將 seq_lens 限制為整數張量。

LSTM - 14

版本

  • 名稱: LSTM (GitHub)

  • : main

  • since_version: 14

  • function: False

  • 支援等級: SupportType.COMMON

  • 形狀推斷: True

此版本的運算符從版本 14 開始提供。

摘要

計算單層 LSTM。此運算符通常透過一些自定義實現(如 CuDNN)來支援。

符號

  • X - 輸入張量

  • i - 輸入閘

  • o - 輸出閘

  • f - 遺忘閘

  • c - 細胞閘

  • t - 時間步長(t-1 表示上一個時間步長)

  • W[iofc] - 輸入、輸出、遺忘和細胞閘的 W 參數權重矩陣

  • R[iofc] - 輸入、輸出、遺忘和細胞閘的 R 遞迴權重矩陣

  • Wb[iofc] - 輸入、輸出、遺忘和細胞閘的 W 偏置向量

  • Rb[iofc] - 輸入、輸出、遺忘和細胞閘的 R 偏置向量

  • P[iof] - 輸入、輸出和遺忘閘的 P 窺視孔權重向量

  • WB[iofc] - 反向輸入、輸出、遺忘和細胞閘的 W 參數權重矩陣

  • RB[iofc] - 反向輸入、輸出、遺忘和細胞閘的 R 遞迴權重矩陣

  • WBb[iofc] - 反向輸入、輸出、遺忘和細胞閘的 W 偏置向量

  • RBb[iofc] - 反向輸入、輸出、遺忘和細胞閘的 R 偏置向量

  • PB[iof] - 反向輸入、輸出和遺忘閘的 P 窺視孔權重向量

  • H - 隱藏狀態

  • num_directions - 如果方向 == 雙向則為 2,否則為 1

激活函數

  • Relu(x) - max(0, x)

  • Tanh(x) - (1 - e^{-2x})/(1 + e^{-2x})

  • Sigmoid(x) - 1/(1 + e^{-x})

注意:以下為可選

  • Affine(x) - alpha*x + beta

  • LeakyRelu(x) - 如果 x >= 0,則為 x,否則為 alpha * x

  • ThresholdedRelu(x) - 如果 x >= alpha,則為 x,否則為 0

  • ScaledTanh(x) - alphaTanh(betax)

  • HardSigmoid(x) - min(max(alpha*x + beta, 0), 1)

  • Elu(x) - 如果 x >= 0,則為 x,否則為 alpha*(e^x - 1)

  • Softsign(x) - x/(1 + |x|)

  • Softplus(x) - log(1 + e^x)

方程式(預設:f=Sigmoid、g=Tanh、h=Tanh)

  • it = f(Xt*(Wi^T) + Ht-1*(Ri^T) + Pi (.) Ct-1 + Wbi + Rbi)

  • ft = f(Xt*(Wf^T) + Ht-1*(Rf^T) + Pf (.) Ct-1 + Wbf + Rbf)

  • ct = g(Xt*(Wc^T) + Ht-1*(Rc^T) + Wbc + Rbc)

  • Ct = ft (.) Ct-1 + it (.) ct

  • ot = f(Xt*(Wo^T) + Ht-1*(Ro^T) + Po (.) Ct + Wbo + Rbo)

  • Ht = ot (.) h(Ct) 此運算符具有可選輸入/輸出。 關於可選引數的表示,請參閱 ONNX IR 以獲取更多詳細資訊。 可以使用空字串代替實際引數的名稱,以指示遺失的引數。 尾部的可選引數(後面沒有跟著存在的引數的引數)也可以簡單地省略。

屬性

  • activation_alpha - FLOATS :

    某些激活函數使用的可選縮放值。 這些值以激活函數的順序使用,例如 LSTM 中的 (f, g, h)。 預設值與對應的 ONNX 運算符相同。 例如,對於 LeakyRelu,預設 alpha 為 0.01。

  • activation_beta - FLOATS :

    某些激活函數使用的可選縮放值。 這些值以激活函數的順序使用,例如 LSTM 中的 (f, g, h)。 預設值與對應的 ONNX 運算符相同。

  • activations - STRINGS :

    用於輸入、輸出、遺忘、細胞和隱藏的 3 個(如果為雙向,則為 6 個)激活函數的清單。 激活函數必須是上述指定的激活函數之一。 可選:如果未指定,請參閱預設方程式。

  • clip - FLOAT :

    細胞剪切閾值。 剪切將張量的元素限制在 [-閾值, +閾值] 的範圍內,並應用於激活的輸入。 如果未指定,則不剪切。

  • direction - STRING(預設為 'forward'

    指定 RNN 是向前、反向還是雙向。 必須是 forward(預設)、reverse 或 bidirectional 之一。

  • hidden_size - INT :

    隱藏層中的神經元數量

  • input_forget - INT(預設為 '0'

    如果為 1,則將輸入和遺忘閘耦合。

  • layout - INT(預設為 '0'

    輸入 X、initial_h、initial_c 和輸出 Y、Y_h、Y_c 的形狀格式。 如果為 0,則預期以下形狀:X.shape = [seq_length, batch_size, input_size],Y.shape = [seq_length, num_directions, batch_size, hidden_size],initial_h.shape = Y_h.shape = initial_c.shape = Y_c.shape = [num_directions, batch_size, hidden_size]。 如果為 1,則預期以下形狀:X.shape = [batch_size, seq_length, input_size],Y.shape = [batch_size, seq_length, num_directions, hidden_size],initial_h.shape = Y_h.shape = initial_c.shape = Y_c.shape = [batch_size, num_directions, hidden_size]。

輸入

介於 3 到 8 個輸入之間。

  • X (異質) - T

    輸入序列打包(並可能填充)成一個 3 維張量,形狀為 [seq_length, batch_size, input_size]

  • W (異質) - T

    閘的權重張量。沿維度 0 連接 W[iofc]WB[iofc](如果為雙向)。張量的形狀為 [num_directions, 4*hidden_size, input_size]

  • R (異質) - T

    遞迴權重張量。沿維度 0 連接 R[iofc]RB[iofc](如果為雙向)。此張量的形狀為 [num_directions, 4*hidden_size, hidden_size]

  • B (可選,異質) - T

    輸入閘的偏置張量。沿維度 0 連接 [Wb[iofc], Rb[iofc]][WBb[iofc], RBb[iofc]](如果為雙向)。此張量的形狀為 [num_directions, 8*hidden_size]。 可選:如果未指定,則假定為 0。

  • sequence_lens (可選,異質) - T1

    指定批次中序列長度的可選張量。如果未指定,則假定批次中的所有序列的長度為 seq_length。其形狀為 [batch_size]

  • initial_h (可選,異質) - T

    隱藏層的可選初始值。若未指定,則假設為 0。其形狀為 [num_directions, batch_size, hidden_size]

  • initial_c (可選,異質) - T

    記憶單元的可選初始值。若未指定,則假設為 0。其形狀為 [num_directions, batch_size, hidden_size]

  • P (可選,異質) - T

    窺視孔的權重張量。沿著維度 0 連接 P[iof]PB[iof] (若為雙向)。其形狀為 [num_directions, 3*hidde_size]。可選:若未指定,則假設為 0。

輸出

介於 0 和 3 個輸出之間。

  • Y (可選,異質) - T

    一個張量,串接了隱藏層所有中間輸出值。其形狀為 [seq_length, num_directions, batch_size, hidden_size]

  • Y_h (可選,異質) - T

    隱藏層的最後輸出值。其形狀為 [num_directions, batch_size, hidden_size]

  • Y_c (可選,異質) - T

    記憶單元的最後輸出值。其形狀為 [num_directions, batch_size, hidden_size]

類型約束

  • T 為 ( tensor(double), tensor(float), tensor(float16) )

    將輸入和輸出類型限制為浮點數張量。

  • T1 為 ( tensor(int32) )

    將 seq_lens 限制為整數張量。

LSTM - 7

版本

  • 名稱: LSTM (GitHub)

  • : main

  • since_version: 7

  • function: False

  • 支援等級: SupportType.COMMON

  • 形狀推斷: True

此版本的運算符從版本 7 開始提供。

摘要

計算單層 LSTM。此運算符通常透過一些自定義實現(如 CuDNN)來支援。

符號

X - 輸入張量

i - 輸入閘

o - 輸出閘

f - 遺忘閘

c - 細胞閘

t - 時間步長(t-1 表示上一個時間步長)

W[iofc] - 輸入、輸出、遺忘和細胞閘的 W 參數權重矩陣

R[iofc] - 輸入、輸出、遺忘和細胞閘的 R 遞迴權重矩陣

Wb[iofc] - 輸入、輸出、遺忘和細胞閘的 W 偏置向量

Rb[iofc] - 輸入、輸出、遺忘和細胞閘的 R 偏置向量

P[iof] - 輸入、輸出和遺忘閘的 P 窺視孔權重向量

WB[iofc] - 反向輸入、輸出、遺忘和細胞閘的 W 參數權重矩陣

RB[iofc] - 反向輸入、輸出、遺忘和細胞閘的 R 遞迴權重矩陣

WBb[iofc] - 反向輸入、輸出、遺忘和細胞閘的 W 偏置向量

RBb[iofc] - 反向輸入、輸出、遺忘和細胞閘的 R 偏置向量

PB[iof] - 反向輸入、輸出和遺忘閘的 P 窺視孔權重向量

H - 隱藏狀態

num_directions - 如果方向 == 雙向則為 2,否則為 1

激活函數

Relu(x) - max(0, x)

Tanh(x) - (1 - e^{-2x})/(1 + e^{-2x})

Sigmoid(x) - 1/(1 + e^{-x})

(注意:以下為可選)

Affine(x) - alpha*x + beta

LeakyRelu(x) - 如果 x >= 0,則為 x,否則為 alpha * x

ThresholdedRelu(x) - 如果 x >= alpha,則為 x,否則為 0

ScaledTanh(x) - alphaTanh(betax)

HardSigmoid(x) - min(max(alpha*x + beta, 0), 1)

Elu(x) - 如果 x >= 0,則為 x,否則為 alpha*(e^x - 1)

Softsign(x) - x/(1 + |x|)

Softplus(x) - log(1 + e^x)

方程式(預設:f=Sigmoid、g=Tanh、h=Tanh)

  • it = f(Xt*(Wi^T) + Ht-1*(Ri^T) + Pi (.) Ct-1 + Wbi + Rbi)

  • ft = f(Xt*(Wf^T) + Ht-1*(Rf^T) + Pf (.) Ct-1 + Wbf + Rbf)

  • ct = g(Xt*(Wc^T) + Ht-1*(Rc^T) + Wbc + Rbc)

  • Ct = ft (.) Ct-1 + it (.) ct

  • ot = f(Xt*(Wo^T) + Ht-1*(Ro^T) + Po (.) Ct + Wbo + Rbo)

  • Ht = ot (.) h(Ct) 此運算符具有可選輸入/輸出。 關於可選引數的表示,請參閱 ONNX IR 以獲取更多詳細資訊。 可以使用空字串代替實際引數的名稱,以指示遺失的引數。 尾部的可選引數(後面沒有跟著存在的引數的引數)也可以簡單地省略。

屬性

  • activation_alpha - FLOATS :

    某些激活函數使用的可選縮放值。 這些值以激活函數的順序使用,例如 LSTM 中的 (f, g, h)。 預設值與對應的 ONNX 運算符相同。 例如,對於 LeakyRelu,預設 alpha 為 0.01。

  • activation_beta - FLOATS :

    某些激活函數使用的可選縮放值。 這些值以激活函數的順序使用,例如 LSTM 中的 (f, g, h)。 預設值與對應的 ONNX 運算符相同。

  • activations - STRINGS :

    用於輸入、輸出、遺忘、細胞和隱藏的 3 個(如果為雙向,則為 6 個)激活函數的清單。 激活函數必須是上述指定的激活函數之一。 可選:如果未指定,請參閱預設方程式。

  • clip - FLOAT :

    細胞剪切閾值。 剪切將張量的元素限制在 [-閾值, +閾值] 的範圍內,並應用於激活的輸入。 如果未指定,則不剪切。

  • direction - STRING(預設為 'forward'

    指定 RNN 是向前、反向還是雙向。 必須是 forward(預設)、reverse 或 bidirectional 之一。

  • hidden_size - INT :

    隱藏層中的神經元數量

  • input_forget - INT(預設為 '0'

    如果為 1,則將輸入和遺忘閘耦合。

輸入

介於 3 到 8 個輸入之間。

  • X (異質) - T

    輸入序列打包(並可能填充)成一個 3 維張量,形狀為 [seq_length, batch_size, input_size]

  • W (異質) - T

    閘的權重張量。沿維度 0 連接 W[iofc]WB[iofc](如果為雙向)。張量的形狀為 [num_directions, 4*hidden_size, input_size]

  • R (異質) - T

    遞迴權重張量。沿維度 0 連接 R[iofc]RB[iofc](如果為雙向)。此張量的形狀為 [num_directions, 4*hidden_size, hidden_size]

  • B (可選,異質) - T

    輸入閘的偏置張量。沿維度 0 連接 [Wb[iofc], Rb[iofc]][WBb[iofc], RBb[iofc]](如果為雙向)。此張量的形狀為 [num_directions, 8*hidden_size]。 可選:如果未指定,則假定為 0。

  • sequence_lens (可選,異質) - T1

    指定批次中序列長度的可選張量。如果未指定,則假定批次中的所有序列的長度為 seq_length。其形狀為 [batch_size]

  • initial_h (可選,異質) - T

    隱藏層的可選初始值。若未指定,則假設為 0。其形狀為 [num_directions, batch_size, hidden_size]

  • initial_c (可選,異質) - T

    記憶單元的可選初始值。若未指定,則假設為 0。其形狀為 [num_directions, batch_size, hidden_size]

  • P (可選,異質) - T

    窺視孔的權重張量。沿著維度 0 連接 P[iof]PB[iof] (若為雙向)。其形狀為 [num_directions, 3*hidde_size]。可選:若未指定,則假設為 0。

輸出

介於 0 和 3 個輸出之間。

  • Y (可選,異質) - T

    一個張量,串接了隱藏層所有中間輸出值。其形狀為 [seq_length, num_directions, batch_size, hidden_size]

  • Y_h (可選,異質) - T

    隱藏層的最後輸出值。其形狀為 [num_directions, batch_size, hidden_size]

  • Y_c (可選,異質) - T

    記憶單元的最後輸出值。其形狀為 [num_directions, batch_size, hidden_size]

類型約束

  • T 為 ( tensor(double), tensor(float), tensor(float16) )

    將輸入和輸出類型限制為浮點數張量。

  • T1 為 ( tensor(int32) )

    將 seq_lens 限制為整數張量。

LSTM - 1

版本

  • 名稱: LSTM (GitHub)

  • : main

  • since_version: 1

  • function: False

  • 支援等級: SupportType.COMMON

  • 形狀推斷: True

此版本的運算符從版本 1 開始提供。

摘要

計算單層 LSTM。此運算符通常透過一些自定義實現(如 CuDNN)來支援。

符號

X - 輸入張量

i - 輸入閘

o - 輸出閘

f - 遺忘閘

c - 細胞閘

t - 時間步長(t-1 表示上一個時間步長)

W[iofc] - 輸入、輸出、遺忘和細胞閘的 W 參數權重矩陣

R[iofc] - 輸入、輸出、遺忘和細胞閘的 R 遞迴權重矩陣

Wb[iofc] - 輸入、輸出、遺忘和細胞閘的 W 偏置向量

Rb[iofc] - 輸入、輸出、遺忘和細胞閘的 R 偏置向量

P[iof] - 輸入、輸出和遺忘閘的 P 窺視孔權重向量

WB[iofc] - 反向輸入、輸出、遺忘和細胞閘的 W 參數權重矩陣

RB[iofc] - 反向輸入、輸出、遺忘和細胞閘的 R 遞迴權重矩陣

WBb[iofc] - 反向輸入、輸出、遺忘和細胞閘的 W 偏置向量

RBb[iofc] - 反向輸入、輸出、遺忘和細胞閘的 R 偏置向量

PB[iof] - 反向輸入、輸出和遺忘閘的 P 窺視孔權重向量

H - 隱藏狀態

num_directions - 如果方向 == 雙向則為 2,否則為 1

激活函數

Relu(x) - max(0, x)

Tanh(x) - (1 - e^{-2x})/(1 + e^{-2x})

Sigmoid(x) - 1/(1 + e^{-x})

(注意:以下為可選)

Affine(x) - alpha*x + beta

LeakyRelu(x) - 如果 x >= 0,則為 x,否則為 alpha * x

ThresholdedRelu(x) - 如果 x >= alpha,則為 x,否則為 0

ScaledTanh(x) - alphaTanh(betax)

HardSigmoid(x) - min(max(alpha*x + beta, 0), 1)

Elu(x) - 如果 x >= 0,則為 x,否則為 alpha*(e^x - 1)

Softsign(x) - x/(1 + |x|)

Softplus(x) - log(1 + e^x)

方程式(預設:f=Sigmoid、g=Tanh、h=Tanh)

  • it = f(Xt*(Wi^T) + Ht-1*Ri + Pi (.) Ct-1 + Wbi + Rbi)

  • ft = f(Xt*(Wf^T) + Ht-1*Rf + Pf (.) Ct-1 + Wbf + Rbf)

  • ct = g(Xt*(Wc^T) + Ht-1*Rc + Wbc + Rbc)

  • Ct = ft (.) Ct-1 + it (.) ct

  • ot = f(Xt*(Wo^T) + Ht-1*Ro + Po (.) Ct + Wbo + Rbo)

  • Ht = ot (.) h(Ct)

屬性

  • activation_alpha - FLOATS :

    某些激活函數使用的可選縮放值。 這些值以激活函數的順序使用,例如 LSTM 中的 (f, g, h)。 預設值與對應的 ONNX 運算符相同。 例如,對於 LeakyRelu,預設 alpha 為 0.01。

  • activation_beta - FLOATS :

    某些激活函數使用的可選縮放值。 這些值以激活函數的順序使用,例如 LSTM 中的 (f, g, h)。 預設值與對應的 ONNX 運算符相同。

  • activations - STRINGS :

    用於輸入、輸出、遺忘、細胞和隱藏的 3 個(如果為雙向,則為 6 個)激活函數的清單。 激活函數必須是上述指定的激活函數之一。 可選:如果未指定,請參閱預設方程式。

  • clip - FLOAT :

    細胞剪切閾值。 剪切將張量的元素限制在 [-閾值, +閾值] 的範圍內,並應用於激活的輸入。 如果未指定,則不剪切。

  • direction - STRING(預設為 'forward'

    指定 RNN 是向前、反向還是雙向。 必須是 forward(預設)、reverse 或 bidirectional 之一。

  • hidden_size - INT :

    隱藏層中的神經元數量

  • input_forget - INT(預設為 '0'

    如果為 1,則耦合輸入和遺忘閘,預設值為 0。

  • output_sequence - INT (預設值為 '0')

    如果為 0,則隱藏層的序列輸出為可選。預設值為 0。

輸入

介於 3 到 8 個輸入之間。

  • X (異質) - T

    輸入序列打包(並可能填充)成一個 3 維張量,形狀為 [seq_length, batch_size, input_size]

  • W (異質) - T

    閘的權重張量。沿維度 0 連接 W[iofc]WB[iofc](如果為雙向)。張量的形狀為 [num_directions, 4*hidden_size, input_size]

  • R (異質) - T

    遞迴權重張量。沿維度 0 連接 R[iofc]RB[iofc](如果為雙向)。此張量的形狀為 [num_directions, 4*hidden_size, hidden_size]

  • B (可選,異質) - T

    輸入閘的偏置張量。沿維度 0 連接 [Wb[iofc], Rb[iofc]][WBb[iofc], RBb[iofc]](如果為雙向)。此張量的形狀為 [num_directions, 8*hidden_size]。 可選:如果未指定,則假定為 0。

  • sequence_lens (可選,異質) - T1

    指定批次中序列長度的可選張量。如果未指定,則假定批次中的所有序列的長度為 seq_length。其形狀為 [batch_size]

  • initial_h (可選,異質) - T

    隱藏層的可選初始值。若未指定,則假設為 0。其形狀為 [num_directions, batch_size, hidden_size]

  • initial_c (可選,異質) - T

    記憶單元的可選初始值。若未指定,則假設為 0。其形狀為 [num_directions, batch_size, hidden_size]

  • P (可選,異質) - T

    窺視孔的權重張量。沿著維度 0 連接 P[iof]PB[iof] (若為雙向)。其形狀為 [num_directions, 3*hidde_size]。可選:若未指定,則假設為 0。

輸出

介於 0 和 3 個輸出之間。

  • Y (可選,異質) - T

    一個張量,串接了隱藏層所有中間輸出值。其形狀為 [seq_length, num_directions, batch_size, hidden_size]。如果 output_sequence 為 0,則為可選。

  • Y_h (可選,異質) - T

    隱藏層的最後輸出值。其形狀為 [num_directions, batch_size, hidden_size]

  • Y_c (可選,異質) - T

    記憶單元的最後輸出值。其形狀為 [num_directions, batch_size, hidden_size]

類型約束

  • T 為 ( tensor(double), tensor(float), tensor(float16) )

    將輸入和輸出類型限制為浮點數張量。

  • T1 為 ( tensor(int32) )

    將 seq_lens 限制為整數張量。