RNN

RNN - 22

版本

  • 名稱RNN (GitHub)

  • 網域main

  • since_version22

  • 函數False

  • 支援層級SupportType.COMMON

  • 形狀推斷True

此運算子版本自版本 22 開始提供。

摘要

計算單層簡單 RNN。此運算子通常透過某些自訂實作(例如 CuDNN)支援。

符號

  • X - 輸入張量

  • i - 輸入閘

  • t - 時間步驟(t-1 代表前一個時間步驟)

  • Wi - 輸入閘的 W 參數權重矩陣

  • Ri - 輸入閘的 R 遞迴權重矩陣

  • Wbi - 輸入閘的 W 參數偏差向量

  • Rbi - 輸入閘的 R 參數偏差向量

  • WBi - 反向輸入閘的 W 參數權重矩陣

  • RBi - 反向輸入閘的 R 遞迴權重矩陣

  • WBbi - 反向輸入閘的 WR 偏差向量

  • RBbi - 反向輸入閘的 RR 偏差向量

  • H - 隱藏狀態

  • num_directions - 若 direction == bidirectional 則為 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=Tanh)

  • Ht = f(Xt*(Wi^T) + Ht-1*(Ri^T) + Wbi + Rbi) 此運算子具有可選的輸入/輸出。如需更多關於可選引數表示法的詳細資訊,請參閱 ONNX IR。可以使用空字串來代替實際引數的名稱,以表示缺少引數。尾隨的可選引數(後面沒有緊跟著一個存在的引數)也可以直接省略。

屬性

  • activation_alpha - 浮點數 :

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

  • activation_beta - 浮點數 :

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

  • activations - 字串(預設值為 ['Tanh', 'Tanh']

    輸入閘的一個(若為雙向則為兩個)啟用函數。啟用函數必須是上述指定的啟用函數之一。可選:若未指定,預設值為 Tanh

  • clip - 浮點數 :

    儲存格剪輯閾值。剪輯將張量的元素限制在 [-threshold, +threshold] 的範圍內,並應用於啟用的輸入。若未指定則不剪輯。

  • direction - 字串(預設值為 'forward'

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

  • hidden_size - 整數 :

    隱藏層中的神經元數量

  • layout - 整數(預設值為 '0'

    輸入 X、initial_h 和輸出 Y、Y_h 的形狀格式。若為 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 = [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 = [batch_size, num_directions, hidden_size]。

輸入

3 到 6 個輸入。

  • X (異質) - T

    將輸入序列壓縮(並可能填補)成一個 3 維張量,形狀為 [seq_length, batch_size, input_size]

  • W (異質) - T

    輸入閘的權重張量。串聯 WiWBi(若為雙向)。張量的形狀為 [num_directions, hidden_size, input_size]

  • R (異質) - T

    遞迴權重張量。串聯 RiRBi(若為雙向)。張量的形狀為 [num_directions, hidden_size, hidden_size]

  • B (可選,異質) - T

    輸入閘的偏差張量。串聯 [Wbi, Rbi][WBbi, RBbi](若為雙向)。張量的形狀為 [num_directions, 2*hidden_size]。可選:若未指定 - 假設為 0。

  • sequence_lens (可選,異質) - T1

    指定批次中序列長度的可選張量。若未指定 - 假設批次中的所有序列長度皆為 seq_length。其形狀為 [batch_size]

  • initial_h (可選,異質) - T

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

輸出

0 到 2 個輸出。

  • Y (可選,異質) - T

    串聯所有隱藏的中繼輸出值的張量。其形狀為 [seq_length, num_directions, batch_size, hidden_size]

  • Y_h (可選,異質) - T

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

類型限制

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

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

  • T1 in ( tensor(int32) )

    限制 seq_lens 為整數張量。

RNN - 14

版本

  • 名稱RNN (GitHub)

  • 網域main

  • since_version: 14

  • 函數False

  • 支援層級SupportType.COMMON

  • 形狀推斷True

此運算符版本自版本 14開始可用。

摘要

計算單層簡單 RNN。此運算子通常透過某些自訂實作(例如 CuDNN)支援。

符號

  • X - 輸入張量

  • i - 輸入閘

  • t - 時間步驟(t-1 代表前一個時間步驟)

  • Wi - 輸入閘的 W 參數權重矩陣

  • Ri - 輸入閘的 R 遞迴權重矩陣

  • Wbi - 輸入閘的 W 參數偏差向量

  • Rbi - 輸入閘的 R 參數偏差向量

  • WBi - 反向輸入閘的 W 參數權重矩陣

  • RBi - 反向輸入閘的 R 遞迴權重矩陣

  • WBbi - 反向輸入閘的 WR 偏差向量

  • RBbi - 反向輸入閘的 RR 偏差向量

  • H - 隱藏狀態

  • num_directions - 若 direction == bidirectional 則為 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=Tanh)

  • Ht = f(Xt*(Wi^T) + Ht-1*(Ri^T) + Wbi + Rbi) 此運算子具有可選的輸入/輸出。如需更多關於可選引數表示法的詳細資訊,請參閱 ONNX IR。可以使用空字串來代替實際引數的名稱,以表示缺少引數。尾隨的可選引數(後面沒有緊跟著一個存在的引數)也可以直接省略。

屬性

  • activation_alpha - 浮點數 :

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

  • activation_beta - 浮點數 :

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

  • activations - 字串(預設值為 ['Tanh', 'Tanh']

    輸入閘的一個(若為雙向則為兩個)啟用函數。啟用函數必須是上述指定的啟用函數之一。可選:若未指定,預設值為 Tanh

  • clip - 浮點數 :

    儲存格剪輯閾值。剪輯將張量的元素限制在 [-threshold, +threshold] 的範圍內,並應用於啟用的輸入。若未指定則不剪輯。

  • direction - 字串(預設值為 'forward'

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

  • hidden_size - 整數 :

    隱藏層中的神經元數量

  • layout - 整數(預設值為 '0'

    輸入 X、initial_h 和輸出 Y、Y_h 的形狀格式。若為 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 = [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 = [batch_size, num_directions, hidden_size]。

輸入

3 到 6 個輸入。

  • X (異質) - T

    將輸入序列壓縮(並可能填補)成一個 3 維張量,形狀為 [seq_length, batch_size, input_size]

  • W (異質) - T

    輸入閘的權重張量。串聯 WiWBi(若為雙向)。張量的形狀為 [num_directions, hidden_size, input_size]

  • R (異質) - T

    遞迴權重張量。串聯 RiRBi(若為雙向)。張量的形狀為 [num_directions, hidden_size, hidden_size]

  • B (可選,異質) - T

    輸入閘的偏差張量。串聯 [Wbi, Rbi][WBbi, RBbi](若為雙向)。張量的形狀為 [num_directions, 2*hidden_size]。可選:若未指定 - 假設為 0。

  • sequence_lens (可選,異質) - T1

    指定批次中序列長度的可選張量。若未指定 - 假設批次中的所有序列長度皆為 seq_length。其形狀為 [batch_size]

  • initial_h (可選,異質) - T

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

輸出

0 到 2 個輸出。

  • Y (可選,異質) - T

    串聯所有隱藏的中繼輸出值的張量。其形狀為 [seq_length, num_directions, batch_size, hidden_size]

  • Y_h (可選,異質) - T

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

類型約束

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

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

  • T1 in ( tensor(int32) )

    限制 seq_lens 為整數張量。

RNN - 7

版本

  • 名稱RNN (GitHub)

  • 網域main

  • since_version: 7

  • 函數False

  • 支援層級SupportType.COMMON

  • 形狀推斷True

此運算符版本自版本 7開始可用。

摘要

計算單層簡單 RNN。此運算子通常透過某些自訂實作(例如 CuDNN)支援。

符號

X - 輸入張量

i - 輸入閘

t - 時間步驟(t-1 代表前一個時間步驟)

Wi - 輸入閘的 W 參數權重矩陣

Ri - 輸入閘的 R 遞迴權重矩陣

Wbi - 輸入閘的 W 參數偏差向量

Rbi - 輸入閘的 R 參數偏差向量

WBi - 反向輸入閘的 W 參數權重矩陣

RBi - 反向輸入閘的 R 遞迴權重矩陣

WBbi - 反向輸入閘的 WR 偏差向量

RBbi - 反向輸入閘的 RR 偏差向量

H - 隱藏狀態

num_directions - 若 direction == bidirectional 則為 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=Tanh)

  • Ht = f(Xt*(Wi^T) + Ht-1*(Ri^T) + Wbi + Rbi) 此運算子具有可選的輸入/輸出。如需更多關於可選引數表示法的詳細資訊,請參閱 ONNX IR。可以使用空字串來代替實際引數的名稱,以表示缺少引數。尾隨的可選引數(後面沒有緊跟著一個存在的引數)也可以直接省略。

屬性

  • activation_alpha - 浮點數 :

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

  • activation_beta - 浮點數 :

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

  • activations - 字串(預設值為 ['Tanh', 'Tanh']

    輸入閘的一個(若為雙向則為兩個)啟用函數。啟用函數必須是上述指定的啟用函數之一。可選:若未指定,預設值為 Tanh

  • clip - 浮點數 :

    儲存格剪輯閾值。剪輯將張量的元素限制在 [-threshold, +threshold] 的範圍內,並應用於啟用的輸入。若未指定則不剪輯。

  • direction - 字串(預設值為 'forward'

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

  • hidden_size - 整數 :

    隱藏層中的神經元數量

輸入

3 到 6 個輸入。

  • X (異質) - T

    將輸入序列壓縮(並可能填補)成一個 3 維張量,形狀為 [seq_length, batch_size, input_size]

  • W (異質) - T

    輸入閘的權重張量。串聯 WiWBi(若為雙向)。張量的形狀為 [num_directions, hidden_size, input_size]

  • R (異質) - T

    遞迴權重張量。串聯 RiRBi(若為雙向)。張量的形狀為 [num_directions, hidden_size, hidden_size]

  • B (可選,異質) - T

    輸入閘的偏差張量。串聯 [Wbi, Rbi][WBbi, RBbi](若為雙向)。張量的形狀為 [num_directions, 2*hidden_size]。可選:若未指定 - 假設為 0。

  • sequence_lens (可選,異質) - T1

    指定批次中序列長度的可選張量。若未指定 - 假設批次中的所有序列長度皆為 seq_length。其形狀為 [batch_size]

  • initial_h (可選,異質) - T

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

輸出

0 到 2 個輸出。

  • Y (可選,異質) - T

    串聯所有隱藏的中繼輸出值的張量。其形狀為 [seq_length, num_directions, batch_size, hidden_size]

  • Y_h (可選,異質) - T

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

類型約束

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

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

  • T1 in ( tensor(int32) )

    限制 seq_lens 為整數張量。

RNN - 1

版本

  • 名稱RNN (GitHub)

  • 網域main

  • since_version: 1

  • 函數False

  • 支援層級SupportType.COMMON

  • 形狀推斷True

此運算符版本自版本 1開始可用。

摘要

計算單層簡單 RNN。此運算子通常透過某些自訂實作(例如 CuDNN)支援。

符號

X - 輸入張量

i - 輸入閘

t - 時間步驟(t-1 代表前一個時間步驟)

Wi - 輸入閘的 W 參數權重矩陣

Ri - 輸入閘的 R 遞迴權重矩陣

Wbi - 輸入閘的 W 參數偏差向量

Rbi - 輸入閘的 R 參數偏差向量

WBi - 反向輸入閘的 W 參數權重矩陣

RBi - 反向輸入閘的 R 遞迴權重矩陣

WBbi - 反向輸入閘的 WR 偏差向量

RBbi - 反向輸入閘的 RR 偏差向量

H - 隱藏狀態

num_directions - 若 direction == bidirectional 則為 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=Tanh)

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

屬性

  • activation_alpha - 浮點數 :

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

  • activation_beta - 浮點數 :

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

  • activations - 字串(預設值為 ['Tanh', 'Tanh']

    輸入閘的一個(若為雙向則為兩個)啟用函數。啟用函數必須是上述指定的啟用函數之一。可選:若未指定,預設值為 Tanh

  • clip - 浮點數 :

    儲存格剪輯閾值。剪輯將張量的元素限制在 [-threshold, +threshold] 的範圍內,並應用於啟用的輸入。若未指定則不剪輯。

  • direction - 字串(預設值為 'forward'

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

  • hidden_size - 整數 :

    隱藏層中的神經元數量

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

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

輸入

3 到 6 個輸入。

  • X (異質) - T

    將輸入序列壓縮(並可能填補)成一個 3 維張量,形狀為 [seq_length, batch_size, input_size]

  • W (異質) - T

    輸入閘的權重張量。串聯 WiWBi(若為雙向)。張量的形狀為 [num_directions, hidden_size, input_size]

  • R (異質) - T

    遞迴權重張量。串聯 RiRBi(若為雙向)。張量的形狀為 [num_directions, hidden_size, hidden_size]

  • B (可選,異質) - T

    輸入閘的偏差張量。串聯 [Wbi, Rbi][WBbi, RBbi](若為雙向)。張量的形狀為 [num_directions, 2*hidden_size]。可選:若未指定 - 假設為 0。

  • sequence_lens (可選,異質) - T1

    指定批次中序列長度的可選張量。若未指定 - 假設批次中的所有序列長度皆為 seq_length。其形狀為 [batch_size]

  • initial_h (可選,異質) - T

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

輸出

0 到 2 個輸出。

  • Y (可選,異質) - T

    一個張量,將隱藏層的所有中間輸出值串聯起來。它的形狀為 [seq_length, num_directions, batch_size, hidden_size]。如果 output_sequence 為 0,則為可選。

  • Y_h (可選,異質) - T

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

類型約束

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

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

  • T1 in ( tensor(int32) )

    限制 seq_lens 為整數張量。