DML_GRU_OPERATOR_DESC结构(directml.h)

对输入执行(标准层)单层封闭循环单元 (GRU) 函数。 此运算符使用多个入口来执行此层。 这些门在序列长度维度和 SequenceLengthsTensor的循环中执行多次。

前进方向的公式

向前方向的 公式

向后方向的公式

向后方向的 公式

公式图例

公式图例

语法

struct DML_GRU_OPERATOR_DESC {
  const DML_TENSOR_DESC           *InputTensor;
  const DML_TENSOR_DESC           *WeightTensor;
  const DML_TENSOR_DESC           *RecurrenceTensor;
  const DML_TENSOR_DESC           *BiasTensor;
  const DML_TENSOR_DESC           *HiddenInitTensor;
  const DML_TENSOR_DESC           *SequenceLengthsTensor;
  const DML_TENSOR_DESC           *OutputSequenceTensor;
  const DML_TENSOR_DESC           *OutputSingleTensor;
  UINT                            ActivationDescCount;
  const DML_OPERATOR_DESC         *ActivationDescs;
  DML_RECURRENT_NETWORK_DIRECTION Direction;
  BOOL                            LinearBeforeReset;
};

成员

InputTensor

类型:const DML_TENSOR_DESC*

包含输入数据的张量,X.打包(并可能填充)到一个 4D 张量,其 大小{ 1, seq_length, batch_size, input_size }。 seq_length是映射到索引 t 的维度。 张量不支持 DML_TENSOR_FLAG_OWNED_BY_DML 标志。

WeightTensor

类型:const DML_TENSOR_DESC*

包含权重数据的张量、W_[zrh] 和 W_B[zrh] 的串联(如果双向)。 张量 大小{ 1, num_directions, 3 * hidden_size, input_size }。 张量不支持 DML_TENSOR_FLAG_OWNED_BY_DML 标志。

RecurrenceTensor

类型:const DML_TENSOR_DESC*

包含重复数据的张量、R_[zrh] 和 R_B[zrh] 的串联(如果双向)。 张量 大小{ 1, num_directions, 3 * hidden_size, hidden_size }。 张量不支持 DML_TENSOR_FLAG_OWNED_BY_DML 标志。

BiasTensor

类型:_Maybenull_ const DML_TENSOR_DESC*

一个可选张量,包含偏差数据 B. 串联 (W_b[zrh], R_b[zrh]) 和 (W_Bb[zrh], R_Bb[zrh]) (如果双向)。 张量 大小{ 1, 1, num_directions, 6 * hidden_size }。 张量不支持 DML_TENSOR_FLAG_OWNED_BY_DML 标志。

HiddenInitTensor

类型:_Maybenull_ const DML_TENSOR_DESC*

一个可选张量,包含隐藏的节点初始值设定项张量,H_t-1 表示第一个循环索引 t。 如果未指定,则默认为 0。 此张量 大小{ 1, num_directions, batch_size, hidden_size }。 张量不支持 DML_TENSOR_FLAG_OWNED_BY_DML 标志。

SequenceLengthsTensor

类型:_Maybenull_ const DML_TENSOR_DESC*

一个可选张量,其中包含批处理中每个元素的独立seq_length。 如果未指定,则批中的所有序列都具有长度seq_length。 此张量 大小{ 1, 1, 1, batch_size }。 张量不支持 DML_TENSOR_FLAG_OWNED_BY_DML 标志。

OutputSequenceTensor

类型:_Maybenull_ const DML_TENSOR_DESC*

一个可选张量,用于编写隐藏节点的所有中间输出值的串联,H_t。 此张量 大小{ seq_length, num_directions, batch_size, hidden_size }。 seq_length映射到循环索引 t。

OutputSingleTensor

类型:_Maybenull_ const DML_TENSOR_DESC*

一个可选张量,用于写入隐藏节点的最后一个输出值,H_t。 此张量 大小{ 1, num_directions, batch_size, hidden_size }

ActivationDescCount

类型:UINT

此字段确定 ActivationDescs 数组的大小。

ActivationDescs

类型:_Field_size_(ActivationDescCount) const DML_OPERATOR_DESC*

包含激活运算符说明的 DML_OPERATOR_DESC 数组,f() 和 g()。 f() 和 g()均独立于方向定义,这意味着,如果在方向中提供 DML_RECURRENT_NETWORK_DIRECTION_FORWARDDML_RECURRENT_NETWORK_DIRECTION_BACKWARD,则必须提供两个激活。 如果提供了 DML_RECURRENT_NETWORK_DIRECTION_BIDIRECTIONAL,则必须提供四个激活。 对于双向,必须为前向后跟 f() 和 g()提供 f() 和 g()的激活。

Direction

类型:DML_RECURRENT_NETWORK_DIRECTION*

运算符的方向-向前、向后或双向。

LinearBeforeReset

类型:BOOL

TRUE 指定在计算隐藏门的输出时,应在将重置门的输出乘以之前应用线性转换。 否则,FALSE

可用性

此运算符是在 DML_FEATURE_LEVEL_1_0中引入的。

Tensor 约束

BiasTensorHiddenInitTensorInputTensorOutputSequenceTensorOutputSingleTensorRecurrenceTensorWeightTensor 必须具有相同 DataType

Tensor 支持

张肌 支持的维度计数 支持的数据类型
InputTensor 输入 4 FLOAT32,FLOAT16
WeightTensor 输入 4 FLOAT32,FLOAT16
RecurrenceTensor 输入 4 FLOAT32,FLOAT16
BiasTensor 可选输入 4 FLOAT32,FLOAT16
HiddenInitTensor 可选输入 4 FLOAT32,FLOAT16
SequenceLengthsTensor 可选输入 4 UINT32
OutputSequenceTensor 可选输出 4 FLOAT32,FLOAT16
OutputSingleTensor 可选输出 4 FLOAT32,FLOAT16

要求

要求 价值
标头 directml.h