DML_LSTM_OPERATOR_DESC 구조체(directml.h)
입력에서 1층 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. 크기가 인 하나의 4차원 텐서로 압축(및 패딩될 수 있습니다).{ 1, seq_length, batch_size, input_size }
seq_length 인덱스 t에 매핑되는 차원입니다. 텐서가 DML_TENSOR_FLAG_OWNED_BY_DML 플래그를 지원하지 않습니다.
WeightTensor
형식: const DML_TENSOR_DESC*
가중치 데이터를 포함하는 텐서, W_[iofc] 및 W_B[iofc](양방향인 경우)의 W. 연결입니다. 텐서의 크기는 입니다.{ 1, num_directions, 4 * hidden_size, input_size }
텐서가 DML_TENSOR_FLAG_OWNED_BY_DML 플래그를 지원하지 않습니다.
RecurrenceTensor
형식: const DML_TENSOR_DESC*
되풀이 데이터를 포함하는 텐서, R. R_[iofc] 및 R_B[iofc](양방향인 경우)의 연결입니다. 이 텐서의 크기는 입니다.{ 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*
peepholes, 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()는 방향과 독립적으로 정의됩니다. 즉, DML_RECURRENT_NETWORK_DIRECTION_FORWARD 또는 DML_RECURRENT_NETWORK_DIRECTION_BACKWARDDirection로 제공된 경우 세 가지 활성화를 제공해야 합니다. DML_RECURRENT_NETWORK_DIRECTION_BIDIRECTIONAL 정의된 경우 6개의 활성화를 제공해야 합니다. 양방향의 경우 정품 인증은 앞으로 f(), g() 및 h()를 제공한 다음, 뒤로 f(), g() 및 h()를 제공해야 합니다.
Direction
형식: const DML_RECURRENT_NETWORK_DIRECTION*
연산자의 방향: 정방향, 뒤로 또는 양방향입니다.
ClipThreshold
형식: float
셀 클립 임계값입니다. 클리핑은 [-ClipThreshold
, +ClipThreshold
] 범위의 텐서 요소를 경계로 하고 활성화 입력에 적용됩니다.
UseClipThreshold
형식: BOOL
True 이면 ClipThreshold 를 사용해야 합니다. 그렇지 않으면 FALSE입니다.
CoupleInputForget
형식: BOOL
입력 및 잊어버린 게이트를 결합해야 하는 경우 TRUE입니다. 그렇지 않으면 FALSE입니다.
가용성
이 연산자는 에서 DML_FEATURE_LEVEL_1_0
도입되었습니다.
텐서 제약 조건
BiasTensor, CellMemInitTensor, HiddenInitTensor, InputTensor, OutputCellSingleTensor, OutputSequenceTensor, OutputSingleTensor, PeepholeTensor, RecurrenceTensor 및 WeightTensor 에는 동일한 DataType이 있어야 합니다.
텐서 지원
텐서 | 종류 | 지원되는 차원 수 | 지원되는 데이터 형식 |
---|---|---|---|
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 |
요구 사항
요구 사항 | 값 |
---|---|
헤더 | directml.h |