RNN

RNN - 22

版本

  • 名称: RNN (GitHub)

  • 域名: main

  • since_version: 22

  • 函数: False

  • support_level: 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 - 如果方向是双向的则为2,否则为1

激活函数:

  • Relu(x) - 最大值(0, x)

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

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

注意:以下是可选的

  • 仿射变换(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 - FLOATS :

    一些激活函数使用的可选缩放值。这些值按照激活函数的顺序被消耗,例如在LSTM中的(f, g, h)。默认值与相应的ONNX运算符相同。例如,对于LeakyRelu,默认的alpha值为0.01。

  • activation_beta - FLOATS :

    一些激活函数使用的可选缩放值。这些值按照激活函数的顺序被消耗,例如LSTM中的(f, g, h)。默认值与相应的ONNX运算符相同。

  • 激活函数 - 字符串(默认为 ['Tanh', 'Tanh']):

    输入门的一个(或两个,如果是双向的)激活函数。激活函数必须是上述指定的激活函数之一。可选:如果未指定,默认值为Tanh

  • clip - 浮点数 :

    单元剪裁阈值。剪裁将张量的元素限制在[-threshold, +threshold]范围内,并应用于激活函数的输入。如果未指定,则不进行剪裁。

  • 方向 - 字符串 (默认是 'forward'):

    指定RNN是前向、反向还是双向的。必须是forward(默认)、reverse或bidirectional之一。

  • hidden_size - INT :

    隐藏层中的神经元数量

  • 布局 - INT (默认是 '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:

    输入序列被打包(并可能填充)成一个形状为[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 在 ( tensor(bfloat16), tensor(double), tensor(float), tensor(float16) ):

    将输入和输出类型限制为浮点张量。

  • T1 在 ( tensor(int32) ) 中:

    将seq_lens限制为整数张量。

RNN - 14

版本

  • 名称: RNN (GitHub)

  • 域名: main

  • since_version: 14

  • 函数: False

  • support_level: 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 - 如果方向是双向的则为2,否则为1

激活函数:

  • Relu(x) - 最大值(0, x)

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

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

注意:以下是可选的

  • 仿射变换(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 - FLOATS :

    一些激活函数使用的可选缩放值。这些值按照激活函数的顺序被消耗,例如在LSTM中的(f, g, h)。默认值与相应的ONNX运算符相同。例如,对于LeakyRelu,默认的alpha值为0.01。

  • activation_beta - FLOATS :

    一些激活函数使用的可选缩放值。这些值按照激活函数的顺序被消耗,例如LSTM中的(f, g, h)。默认值与相应的ONNX运算符相同。

  • 激活函数 - 字符串(默认为 ['Tanh', 'Tanh']):

    输入门的一个(或两个,如果是双向的)激活函数。激活函数必须是上述指定的激活函数之一。可选:如果未指定,默认值为Tanh

  • clip - 浮点数 :

    单元剪裁阈值。剪裁将张量的元素限制在[-threshold, +threshold]范围内,并应用于激活函数的输入。如果未指定,则不进行剪裁。

  • 方向 - 字符串 (默认是 'forward'):

    指定RNN是前向、反向还是双向的。必须是forward(默认)、reverse或bidirectional之一。

  • hidden_size - INT :

    隐藏层中的神经元数量

  • 布局 - INT (默认是 '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:

    输入序列被打包(并可能填充)成一个形状为[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 在 ( tensor(double), tensor(float), tensor(float16) ) 中:

    将输入和输出类型限制为浮点张量。

  • T1 在 ( tensor(int32) ) 中:

    将seq_lens限制为整数张量。

RNN - 7

版本

  • 名称: RNN (GitHub)

  • 域名: main

  • since_version: 7

  • 函数: False

  • support_level: 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 - 如果方向是双向的则为2,否则为1

激活函数:

Relu(x) - 最大值(0, x)

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

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

(注意:以下是可选的)

仿射变换(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 - FLOATS :

    一些激活函数使用的可选缩放值。这些值按照激活函数的顺序被消耗,例如在LSTM中的(f, g, h)。默认值与相应的ONNX运算符相同。例如,对于LeakyRelu,默认的alpha值为0.01。

  • activation_beta - FLOATS :

    一些激活函数使用的可选缩放值。这些值按照激活函数的顺序被消耗,例如LSTM中的(f, g, h)。默认值与相应的ONNX运算符相同。

  • 激活函数 - 字符串(默认为 ['Tanh', 'Tanh']):

    输入门的一个(或两个,如果是双向的)激活函数。激活函数必须是上述指定的激活函数之一。可选:如果未指定,默认值为Tanh

  • clip - 浮点数 :

    单元剪裁阈值。剪裁将张量的元素限制在[-threshold, +threshold]范围内,并应用于激活函数的输入。如果未指定,则不进行剪裁。

  • 方向 - 字符串 (默认是 'forward'):

    指定RNN是前向、反向还是双向的。必须是forward(默认)、reverse或bidirectional之一。

  • hidden_size - INT :

    隐藏层中的神经元数量

输入

输入数量在3到6之间。

  • X (异构) - T:

    输入序列被打包(并可能填充)成一个形状为[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 在 ( tensor(double), tensor(float), tensor(float16) ) 中:

    将输入和输出类型限制为浮点张量。

  • T1 在 ( tensor(int32) ) 中:

    将seq_lens限制为整数张量。

RNN - 1

版本

  • 名称: RNN (GitHub)

  • 域名: main

  • since_version: 1

  • 函数: False

  • support_level: 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 - 如果方向是双向的则为2,否则为1

激活函数:

Relu(x) - 最大值(0, x)

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

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

(注意:以下是可选的)

仿射变换(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 - FLOATS :

    一些激活函数使用的可选缩放值。这些值按照激活函数的顺序被消耗,例如在LSTM中的(f, g, h)。默认值与相应的ONNX运算符相同。例如,对于LeakyRelu,默认的alpha值为0.01。

  • activation_beta - FLOATS :

    一些激活函数使用的可选缩放值。这些值按照激活函数的顺序被消耗,例如LSTM中的(f, g, h)。默认值与相应的ONNX运算符相同。

  • 激活函数 - 字符串(默认为 ['Tanh', 'Tanh']):

    输入门的一个(或两个,如果是双向的)激活函数。激活函数必须是上述指定的激活函数之一。可选:如果未指定,默认值为Tanh

  • clip - 浮点数 :

    单元剪裁阈值。剪裁将张量的元素限制在[-threshold, +threshold]范围内,并应用于激活函数的输入。如果未指定,则不进行剪裁。

  • 方向 - 字符串 (默认是 'forward'):

    指定RNN是前向、反向还是双向的。必须是forward(默认)、reverse或bidirectional之一。

  • hidden_size - INT :

    隐藏层中的神经元数量

  • output_sequence - INT (默认值为 '0'):

    如果隐藏的序列输出为0,则是可选的。默认值为0。

输入

输入数量在3到6之间。

  • X (异构) - T:

    输入序列被打包(并可能填充)成一个形状为[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 在 ( tensor(double), tensor(float), tensor(float16) ) 中:

    将输入和输出类型限制为浮点张量。

  • T1 在 ( tensor(int32) ) 中:

    将seq_lens限制为整数张量。