LSTM

LSTM - 22

版本

  • 名称: LSTM (GitHub)

  • : main

  • 起始版本: 22

  • 函数: 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 - 如果 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 if x >= 0 else alpha * x

  • ThresholdedRelu(x) - x if x >= alpha else 0

  • ScaledTanh(x) - alphaTanh(betax)

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

  • Elu(x) - x if x >= 0 else 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 :

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

  • 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-D 张量中,形状为 [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

  • 起始版本: 14

  • 函数: 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 - 如果 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 if x >= 0 else alpha * x

  • ThresholdedRelu(x) - x if x >= alpha else 0

  • ScaledTanh(x) - alphaTanh(betax)

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

  • Elu(x) - x if x >= 0 else 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 :

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

  • 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-D 张量中,形状为 [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

  • 起始版本: 7

  • 函数: 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 - 如果 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 if x >= 0 else alpha * x

ThresholdedRelu(x) - x if x >= alpha else 0

ScaledTanh(x) - alphaTanh(betax)

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

Elu(x) - x if x >= 0 else 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 :

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

  • direction - STRING (默认为 'forward')

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

  • hidden_size - INT :

    隐藏层中的神经元数量

  • input_forget - INT (默认为 '0')

    如果为 1,则耦合输入门和遗忘门。

输入

介于 3 到 8 个输入。

  • X (异构) - T

    输入序列打包(并可能填充)到一个 3-D 张量中,形状为 [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

  • 起始版本: 1

  • 函数: 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 - 如果 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 if x >= 0 else alpha * x

ThresholdedRelu(x) - x if x >= alpha else 0

ScaledTanh(x) - alphaTanh(betax)

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

Elu(x) - x if x >= 0 else 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 :

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

  • 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-D 张量中,形状为 [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 限制为整数张量。