GRU¶
GRU - 22¶
版本¶
名称: GRU (GitHub)
域名:
mainsince_version:
22函数:
Falsesupport_level:
SupportType.COMMON形状推断:
True
此版本的运算符自版本22起可用。
摘要¶
计算一个单层的GRU。这个操作符通常通过一些自定义实现来支持,例如CuDNN。
符号:
X- 输入张量z- 更新门r- 重置门h- 隐藏门t- 时间步长(t-1 表示前一个时间步长)W[zrh]- W 参数权重矩阵,用于更新、重置和隐藏门R[zrh]- 用于更新、重置和隐藏门的R递归权重矩阵Wb[zrh]- 更新、重置和隐藏门的W偏置向量Rb[zrh]- 用于更新、重置和隐藏门的R偏置向量WB[zrh]- W 参数权重矩阵,用于向后更新、重置和隐藏门RB[zrh]- 用于向后更新、重置和隐藏门的R递归权重矩阵WBb[zrh]- 用于向后更新、重置和隐藏门的W偏置向量RBb[zrh]- 用于向后更新、重置和隐藏门的R偏置向量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) - alpha * Tanh(beta * x)
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):
zt = f(Xt*(Wz^T) + Ht-1*(Rz^T) + Wbz + Rbz)
rt = f(Xt*(Wr^T) + Ht-1*(Rr^T) + Wbr + Rbr)
ht = g(Xt*(Wh^T) + (rt (.) Ht-1)*(Rh^T) + Rbh + Wbh) # 默认情况下,当 linear_before_reset = 0
ht = g(Xt*(Wh^T) + (rt (.) (Ht-1*(Rh^T) + Rbh)) + Wbh) # 当 linear_before_reset != 0 时
Ht = (1 - zt) (.) ht + zt (.) Ht-1 此操作符具有可选的输入/输出。有关可选参数表示的更多详细信息,请参见ONNX IR。可以使用空字符串代替实际参数的名称来表示缺少的参数。尾随的可选参数(后面没有跟随实际存在的参数)也可以简单地省略。
属性¶
activation_alpha - FLOATS :
一些激活函数使用的可选缩放值。这些值按照激活函数的顺序被消耗,例如在LSTM中的(f, g, h)。默认值与相应的ONNX运算符相同。例如,对于LeakyRelu,默认的alpha值为0.01。
activation_beta - FLOATS :
一些激活函数使用的可选缩放值。这些值按照激活函数的顺序被消耗,例如LSTM中的(f, g, h)。默认值与相应的ONNX运算符相同。
激活函数 - 字符串 :
用于更新门、重置门和隐藏门的2个(或双向时为4个)激活函数列表。激活函数必须是上述指定的激活函数之一。可选:如果未指定,请参阅默认值的方程。
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]。
linear_before_reset - INT (默认为
'0'):在计算隐藏门的输出时,先应用线性变换,然后再乘以重置门的输出。
输入¶
输入数量在3到6之间。
X (异构) - T:
输入序列被打包(并可能填充)成一个形状为
[seq_length, batch_size, input_size]的三维张量。W (异构) - T:
门的权重张量。沿维度0连接
W[zrh]和WB[zrh](如果是双向的)。这个张量的形状为[num_directions, 3*hidden_size, input_size]。R (异质的) - T:
递归权重张量。沿维度0连接
R[zrh]和RB[zrh](如果是双向的)。该张量的形状为[num_directions, 3*hidden_size, hidden_size]。B(可选,异构)- T:
门的偏置张量。沿维度0连接
[Wb[zrh], Rb[zrh]]和[WBb[zrh], RBb[zrh]](如果是双向的)。该张量的形状为[num_directions, 6*hidden_size]。可选:如果未指定 - 假定为0sequence_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限制为整数张量。
GRU - 14¶
版本¶
名称: GRU (GitHub)
域名:
mainsince_version:
14函数:
Falsesupport_level:
SupportType.COMMON形状推断:
True
此版本的运算符自版本14起可用。
摘要¶
计算一个单层的GRU。这个操作符通常通过一些自定义实现来支持,例如CuDNN。
符号:
X- 输入张量z- 更新门r- 重置门h- 隐藏门t- 时间步长(t-1 表示前一个时间步长)W[zrh]- W 参数权重矩阵,用于更新、重置和隐藏门R[zrh]- 用于更新、重置和隐藏门的R递归权重矩阵Wb[zrh]- 更新、重置和隐藏门的W偏置向量Rb[zrh]- 用于更新、重置和隐藏门的R偏置向量WB[zrh]- W 参数权重矩阵,用于向后更新、重置和隐藏门RB[zrh]- 用于向后更新、重置和隐藏门的R递归权重矩阵WBb[zrh]- 用于向后更新、重置和隐藏门的W偏置向量RBb[zrh]- 用于向后更新、重置和隐藏门的R偏置向量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) - alpha * Tanh(beta * x)
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):
zt = f(Xt*(Wz^T) + Ht-1*(Rz^T) + Wbz + Rbz)
rt = f(Xt*(Wr^T) + Ht-1*(Rr^T) + Wbr + Rbr)
ht = g(Xt*(Wh^T) + (rt (.) Ht-1)*(Rh^T) + Rbh + Wbh) # 默认情况下,当 linear_before_reset = 0
ht = g(Xt*(Wh^T) + (rt (.) (Ht-1*(Rh^T) + Rbh)) + Wbh) # 当 linear_before_reset != 0 时
Ht = (1 - zt) (.) ht + zt (.) Ht-1 此操作符具有可选的输入/输出。有关可选参数表示的更多详细信息,请参见ONNX IR。可以使用空字符串代替实际参数的名称来表示缺少的参数。尾随的可选参数(后面没有跟随实际存在的参数)也可以简单地省略。
属性¶
activation_alpha - FLOATS :
一些激活函数使用的可选缩放值。这些值按照激活函数的顺序被消耗,例如在LSTM中的(f, g, h)。默认值与相应的ONNX运算符相同。例如,对于LeakyRelu,默认的alpha值为0.01。
activation_beta - FLOATS :
一些激活函数使用的可选缩放值。这些值按照激活函数的顺序被消耗,例如LSTM中的(f, g, h)。默认值与相应的ONNX运算符相同。
激活函数 - 字符串 :
用于更新门、重置门和隐藏门的2个(或双向时为4个)激活函数列表。激活函数必须是上述指定的激活函数之一。可选:如果未指定,请参阅默认值的方程。
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]。
linear_before_reset - INT (默认为
'0'):在计算隐藏门的输出时,先应用线性变换,然后再乘以重置门的输出。
输入¶
输入数量在3到6之间。
X (异构) - T:
输入序列被打包(并可能填充)成一个形状为
[seq_length, batch_size, input_size]的三维张量。W (异构) - T:
门的权重张量。沿维度0连接
W[zrh]和WB[zrh](如果是双向的)。该张量的形状为[num_directions, 3*hidden_size, input_size]。R (异质的) - T:
递归权重张量。沿维度0连接
R[zrh]和RB[zrh](如果是双向的)。该张量的形状为[num_directions, 3*hidden_size, hidden_size]。B(可选,异构)- T:
门的偏置张量。沿维度0连接
[Wb[zrh], Rb[zrh]]和[WBb[zrh], RBb[zrh]](如果是双向的)。该张量的形状为[num_directions, 6*hidden_size]。可选:如果未指定 - 假定为0sequence_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限制为整数张量。
GRU - 7¶
版本¶
名称: GRU (GitHub)
域名:
mainsince_version:
7函数:
Falsesupport_level:
SupportType.COMMON形状推断:
True
此版本的运算符自版本7起可用。
总结¶
计算一个单层的GRU。这个操作符通常通过一些自定义实现来支持,例如CuDNN。
符号:
X - 输入张量
z - 更新门
r - 重置门
h - 隐藏门
t - 时间步长(t-1 表示前一个时间步长)
W[zrh] - W 参数权重矩阵,用于更新、重置和隐藏门
R[zrh] - 用于更新、重置和隐藏门的R递归权重矩阵
Wb[zrh] - 更新、重置和隐藏门的W偏置向量
Rb[zrh] - 用于更新、重置和隐藏门的R偏置向量
WB[zrh] - W 参数权重矩阵,用于向后更新、重置和隐藏门
RB[zrh] - 用于向后更新、重置和隐藏门的R递归权重矩阵
WBb[zrh] - 用于向后更新、重置和隐藏门的W偏置向量
RBb[zrh] - 用于向后更新、重置和隐藏门的R偏置向量
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=Sigmoid, g=Tanh):
zt = f(Xt*(Wz^T) + Ht-1*(Rz^T) + Wbz + Rbz)
rt = f(Xt*(Wr^T) + Ht-1*(Rr^T) + Wbr + Rbr)
ht = g(Xt*(Wh^T) + (rt (.) Ht-1)*(Rh^T) + Rbh + Wbh) # 默认情况下,当 linear_before_reset = 0
ht = g(Xt*(Wh^T) + (rt (.) (Ht-1*(Rh^T) + Rbh)) + Wbh) # 当 linear_before_reset != 0 时
Ht = (1 - zt) (.) ht + zt (.) Ht-1 此操作符具有可选的输入/输出。有关可选参数表示的更多详细信息,请参见ONNX IR。可以使用空字符串代替实际参数的名称来表示缺少的参数。尾随的可选参数(后面没有跟随实际存在的参数)也可以简单地省略。
属性¶
activation_alpha - FLOATS :
一些激活函数使用的可选缩放值。这些值按照激活函数的顺序被消耗,例如在LSTM中的(f, g, h)。默认值与相应的ONNX运算符相同。例如,对于LeakyRelu,默认的alpha值为0.01。
activation_beta - FLOATS :
一些激活函数使用的可选缩放值。这些值按照激活函数的顺序被消耗,例如LSTM中的(f, g, h)。默认值与相应的ONNX运算符相同。
激活函数 - 字符串 :
用于更新门、重置门和隐藏门的2个(或双向时为4个)激活函数列表。激活函数必须是上述指定的激活函数之一。可选:如果未指定,请参阅默认值的方程。
clip - 浮点数 :
单元剪裁阈值。剪裁将张量的元素限制在[-threshold, +threshold]范围内,并应用于激活函数的输入。如果未指定,则不进行剪裁。
方向 - 字符串 (默认是
'forward'):指定RNN是前向、反向还是双向的。必须是forward(默认)、reverse或bidirectional之一。
hidden_size - INT :
隐藏层中的神经元数量
linear_before_reset - INT (默认为
'0'):在计算隐藏门的输出时,先应用线性变换,然后再乘以重置门的输出。
输入¶
输入数量在3到6之间。
X (异构) - T:
输入序列被打包(并可能填充)成一个形状为
[seq_length, batch_size, input_size]的三维张量。W (异构) - T:
门的权重张量。沿维度0连接
W[zrh]和WB[zrh](如果是双向的)。该张量的形状为[num_directions, 3*hidden_size, input_size]。R (异质的) - T:
递归权重张量。沿维度0连接
R[zrh]和RB[zrh](如果是双向的)。该张量的形状为[num_directions, 3*hidden_size, hidden_size]。B(可选,异构)- T:
门的偏置张量。沿维度0连接
[Wb[zrh], Rb[zrh]]和[WBb[zrh], RBb[zrh]](如果是双向的)。该张量的形状为[num_directions, 6*hidden_size]。可选:如果未指定 - 假定为0sequence_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限制为整数张量。
GRU - 3¶
版本¶
名称: GRU (GitHub)
域名:
mainsince_version:
3函数:
Falsesupport_level:
SupportType.COMMON形状推断:
True
此版本的运算符自版本3起可用。
摘要¶
计算一个单层的GRU。这个操作符通常通过一些自定义实现来支持,例如CuDNN。
符号:
X - 输入张量
z - 更新门
r - 重置门
h - 隐藏门
t - 时间步长(t-1 表示前一个时间步长)
W[zrh] - W 参数权重矩阵,用于更新、重置和隐藏门
R[zrh] - 用于更新、重置和隐藏门的R递归权重矩阵
Wb[zrh] - 更新、重置和隐藏门的W偏置向量
Rb[zrh] - 用于更新、重置和隐藏门的R偏置向量
WB[zrh] - W 参数权重矩阵,用于向后更新、重置和隐藏门
RB[zrh] - 用于向后更新、重置和隐藏门的R递归权重矩阵
WBb[zrh] - 用于向后更新、重置和隐藏门的W偏置向量
RBb[zrh] - 用于向后更新、重置和隐藏门的R偏置向量
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=Sigmoid, g=Tanh):
zt = f(Xt*(Wz^T) + Ht-1*Rz + Wbz + Rbz)
rt = f(Xt*(Wr^T) + Ht-1*Rr + Wbr + Rbr)
ht = g(Xt*(Wh^T) + (rt (.) Ht-1)*Rh + Rbh + Wbh) # 默认情况下,当 linear_before_reset = 0
ht = g(Xt*(Wh^T) + (rt (.) (Ht-1*Rh + Rbh) + Wbh) # 当 linear_before_reset != 0 时
Ht = (1 - zt) (.) ht + zt (.) Ht-1
属性¶
activation_alpha - FLOATS :
一些激活函数使用的可选缩放值。这些值按照激活函数的顺序被消耗,例如在LSTM中的(f, g, h)。默认值与相应的ONNX运算符相同。例如,对于LeakyRelu,默认的alpha值为0.01。
activation_beta - FLOATS :
一些激活函数使用的可选缩放值。这些值按照激活函数的顺序被消耗,例如LSTM中的(f, g, h)。默认值与相应的ONNX运算符相同。
激活函数 - 字符串 :
用于更新门、重置门和隐藏门的2个(或双向时为4个)激活函数列表。激活函数必须是上述指定的激活函数之一。可选:如果未指定,请参阅默认值的方程。
clip - 浮点数 :
单元剪裁阈值。剪裁将张量的元素限制在[-threshold, +threshold]范围内,并应用于激活函数的输入。如果未指定,则不进行剪裁。
方向 - 字符串 (默认是
'forward'):指定RNN是前向、反向还是双向的。必须是forward(默认)、reverse或bidirectional之一。
hidden_size - INT :
隐藏层中的神经元数量
linear_before_reset - INT (默认为
'0'):在计算隐藏门的输出时,先应用线性变换,然后再乘以重置门的输出。
output_sequence - INT (默认值为
'0'):如果隐藏的序列输出为0,则是可选的。默认值为0。
输入¶
输入数量在3到6之间。
X (异构) - T:
输入序列被打包(并可能填充)成一个形状为
[seq_length, batch_size, input_size]的三维张量。W (异构) - T:
门的权重张量。沿维度0连接
W[zrh]和WB[zrh](如果是双向的)。该张量的形状为[num_directions, 3*hidden_size, input_size]。R (异质的) - T:
递归权重张量。沿维度0连接
R[zrh]和RB[zrh](如果是双向的)。该张量的形状为[num_directions, 3*hidden_size, hidden_size]。B(可选,异构)- T:
门的偏置张量。沿维度0连接
[Wb[zrh], Rb[zrh]]和[WBb[zrh], RBb[zrh]](如果是双向的)。该张量的形状为[num_directions, 6*hidden_size]。可选:如果未指定 - 假定为0sequence_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限制为整数张量。
GRU - 1¶
版本¶
名称: GRU (GitHub)
域名:
mainsince_version:
1函数:
Falsesupport_level:
SupportType.COMMON形状推断:
False
此版本的运算符自版本1起可用。
摘要¶
计算一个单层的GRU。这个操作符通常通过一些自定义实现来支持,例如CuDNN。
符号:
X - 输入张量
z - 更新门
r - 重置门
h - 隐藏门
t - 时间步长(t-1 表示前一个时间步长)
W[zrh] - W 参数权重矩阵,用于更新、重置和隐藏门
R[zrh] - 用于更新、重置和隐藏门的R递归权重矩阵
Wb[zrh] - 更新、重置和隐藏门的W偏置向量
Rb[zrh] - 用于更新、重置和隐藏门的R偏置向量
WB[zrh] - W 参数权重矩阵,用于向后更新、重置和隐藏门
RB[zrh] - 用于向后更新、重置和隐藏门的R递归权重矩阵
WBb[zrh] - 用于向后更新、重置和隐藏门的W偏置向量
RBb[zrh] - 用于向后更新、重置和隐藏门的R偏置向量
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=Sigmoid, g=Tanh):
zt = f(Xt*(Wz^T) + Ht-1*Rz + Wbz + Rbz)
rt = f(Xt*(Wr^T) + Ht-1*Rr + Wbr + Rbr)
ht = g(Xt*(Wh^T) + (rt (.) Ht-1)*Rh + Rbh + Wbh) # 默认情况下,当 linear_before_reset = 0
ht = g(Xt*(Wh^T) + (rt (.) (Ht-1*Rh + Rbh) + Wbh) # 当 linear_before_reset != 0 时
Ht = (1 - zt) (.) ht + zt (.) Ht-1
属性¶
activation_alpha - FLOATS :
一些激活函数使用的可选缩放值。这些值按照激活函数的顺序被消耗,例如在LSTM中的(f, g, h)。
activation_beta - FLOATS :
一些激活函数使用的可选缩放值。这些值按照激活函数的顺序被消耗,例如在LSTM中的(f, g, h)。
激活函数 - 字符串 :
用于更新门、重置门和隐藏门的2个(或双向时为4个)激活函数列表。激活函数必须是上述指定的激活函数之一。可选:如果未指定,请参阅默认值的方程。
clip - 浮点数 :
单元剪裁阈值。剪裁将张量的元素限制在[-threshold, +threshold]范围内,并应用于激活函数的输入。如果未指定,则不进行剪裁。
方向 - 字符串 (默认是
'foward'):指定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:
门的权重张量。沿维度0连接
W[zrh]和WB[zrh](如果是双向的)。该张量的形状为[num_directions, 3*hidden_size, input_size]。R (异质的) - T:
递归权重张量。沿维度0连接
R[zrh]和RB[zrh](如果是双向的)。该张量的形状为[num_directions, 3*hidden_size, hidden_size]。B(可选,异构)- T:
门的偏置张量。沿维度0连接
[Wb[zrh], Rb[zrh]]和[WBb[zrh], RBb[zrh]](如果是双向的)。该张量的形状为[num_directions, 6*hidden_size]。可选:如果未指定 - 假定为0sequence_lens(可选,异构) - T1:
可选的张量,用于指定批次中序列的长度。如果未指定,则假定批次中的所有序列都具有长度
seq_length。它的形状为[batch_size]。initial_h(可选,异构) - T:
隐藏层的可选初始值。如果未指定,则假定为0。它的形状为
[num_directions, batch_size, hidden_size]。
输出¶
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限制为整数张量。