DML_LSTM_OPERATOR_DESC结构 (directml.h)
对输入执行单层长短期内存 (LSTM) 函数。 此运算符使用多个入口来执行此层。 这些门在一个循环中执行多次,由序列长度维度和 SequenceLengthsTensor 指定。
前进方向的公式
向后方向的公式
公式图例
语法
struct DML_LSTM_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 *CellMemInitTensor;
const DML_TENSOR_DESC *SequenceLengthsTensor;
const DML_TENSOR_DESC *PeepholeTensor;
const DML_TENSOR_DESC *OutputSequenceTensor;
const DML_TENSOR_DESC *OutputSingleTensor;
const DML_TENSOR_DESC *OutputCellSingleTensor;
UINT ActivationDescCount;
const DML_OPERATOR_DESC *ActivationDescs;
DML_RECURRENT_NETWORK_DIRECTION Direction;
float ClipThreshold;
BOOL UseClipThreshold;
BOOL CoupleInputForget;
};
成员
InputTensor
类型: const DML_TENSOR_DESC*
包含输入数据的张量 X.打包 (,并可能将) 填充为一个大小为 的 { 1, seq_length, batch_size, input_size }
4-D 张量。 seq_length是映射到索引的维度,t。 张量不支持 DML_TENSOR_FLAG_OWNED_BY_DML 标志。
WeightTensor
类型: const DML_TENSOR_DESC*
包含权重数据的张量,如果双向) ,则W_[iofc] 和 W_B[iofc] (。 张量的大小 { 1, num_directions, 4 * hidden_size, input_size }
为 。 张量不支持 DML_TENSOR_FLAG_OWNED_BY_DML 标志。
RecurrenceTensor
类型: const DML_TENSOR_DESC*
包含重复数据的张量,如果双向) ,则R_[iofc] 和 R_B[iofc] 的 R. 串联 (。 此张量的大小 { 1, num_directions, 4 * hidden_size, hidden_size }
为 。 张量不支持 DML_TENSOR_FLAG_OWNED_BY_DML 标志。
BiasTensor
类型:_Maybenull_ const DML_TENSOR_DESC*
包含偏差数据的可选张量,B. 串联 , { W_b[iofc], R_b[iofc] }
如果 { W_Bb[iofc], R_Bb[iofc] }
双向) ,则 (。 此张量的大小 { 1, 1, num_directions, 8 * hidden_size }
为 。 如果未指定,则 默认为 0 偏差。 张量不支持 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 标志。
CellMemInitTensor
类型:_Maybenull_ const DML_TENSOR_DESC*
包含单元格初始值设定项数据的可选张量,C_ (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 标志。
PeepholeTensor
类型:_Maybenull_ const DML_TENSOR_DESC*
包含窥视孔的权重数据的可选张量,P。如果未指定,则 默认为 0。 如果双向) ,P_[iof] 和 P_B[iof] 的串联 (。 此张量的大小 { 1, 1, num_directions, 3 * hidden_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 }
为 。
OutputCellSingleTensor
类型:_Maybenull_ const DML_TENSOR_DESC*
一个可选的张量,用于写入单元格的最后一个输出值,C_t。 此张量的大小 { 1, num_directions, batch_size, hidden_size }
为 。
ActivationDescCount
类型: UINT
此字段确定 ActivationDescs 数组的大小。
ActivationDescs
类型:_Field_size_ (ActivationDescCount) const DML_OPERATOR_DESC*
包含激活运算符 f () 、g () 和 h () 的说明的DML_OPERATOR_DESC数组。 f () 、g () 和 h () 独立于方向定义,这意味着如果在 Direction 中提供DML_RECURRENT_NETWORK_DIRECTION_FORWARD或DML_RECURRENT_NETWORK_DIRECTION_BACKWARD,则必须提供三次激活。 如果定义了 DML_RECURRENT_NETWORK_DIRECTION_BIDIRECTIONAL ,则必须提供六个激活。 对于双向激活,必须为向前提供 f () 、g () 和 h () ,后跟 f () 、g () 和 h () ( 后向)。
Direction
类型: const DML_RECURRENT_NETWORK_DIRECTION*
运算符的方向:向前、向后或双向。
ClipThreshold
类型: float
单元格剪辑阈值。 剪裁将张量元素限制在 [-ClipThreshold
、+ClipThreshold
] 范围内,并应用于激活的输入。
UseClipThreshold
类型: BOOL
如果应使用 ClipThreshold,则为 TRUE。 否则为 FALSE。
CoupleInputForget
类型: BOOL
如果应耦合输入门和忽略门,则为 TRUE。 否则为 FALSE。
可用性
此运算符是在 中 DML_FEATURE_LEVEL_1_0
引入的。
张量约束
BiasTensor、 CellMemInitTensor、 HiddenInitTensor、 InputTensor、 OutputCellSingleTensor、 OutputSequenceTensor、 OutputSingleTensor、 PeepholeTensor、 RecurrenceTensor 和 WeightTensor 必须具有相同 的数据类型。
张量支持
张 | 种类 | 支持的维度计数 | 支持的数据类型 |
---|---|---|---|
InputTensor | 输入 | 4 | FLOAT32、FLOAT16 |
WeightTensor | 输入 | 4 | FLOAT32、FLOAT16 |
RecurrenceTensor | 输入 | 4 | FLOAT32、FLOAT16 |
BiasTensor | 可选输入 | 4 | FLOAT32、FLOAT16 |
HiddenInitTensor | 可选输入 | 4 | FLOAT32、FLOAT16 |
CellMemInitTensor | 可选输入 | 4 | FLOAT32、FLOAT16 |
SequenceLengthsTensor | 可选输入 | 4 | UINT32 |
PeepholeTensor | 可选输入 | 4 | FLOAT32、FLOAT16 |
OutputSequenceTensor | 可选输出 | 4 | FLOAT32、FLOAT16 |
OutputSingleTensor | 可选输出 | 4 | FLOAT32、FLOAT16 |
OutputCellSingleTensor | 可选输出 | 4 | FLOAT32、FLOAT16 |
要求
要求 | 值 |
---|---|
Header | directml.h |