다음을 통해 공유


DML_GRU_OPERATOR_DESC 구조체(directml.h)

입력에서 (표준 계층) 1층 제어 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 텐서로 압축(및 패딩될 수 있습니다). 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. 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*

첫 번째 루프 인덱스 t의 경우 숨겨진 노드 이니셜라이저 텐서 H_t-1을 포함하는 선택적 텐서입니다. 지정하지 않으면 기본값은 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*

활성화 연산자 f() 및 g()에 대한 설명을 포함하는 DML_OPERATOR_DESC 배열입니다. f() 및 g()는 방향과 독립적으로 정의됩니다. 즉, DML_RECURRENT_NETWORK_DIRECTION_FORWARD 또는 DML_RECURRENT_NETWORK_DIRECTION_BACKWARDDirection제공된 경우 두 개의 활성화를 제공해야 합니다. DML_RECURRENT_NETWORK_DIRECTION_BIDIRECTIONAL 제공된 경우 4개의 활성화를 제공해야 합니다. 양방향의 경우 정품 인증은 앞으로 f() 및 g()를 제공한 다음, f() 및 g()를 역방향으로 제공해야 합니다.

Direction

형식: const DML_RECURRENT_NETWORK_DIRECTION*

연산자의 방향(앞으로, 뒤로 또는 양방향)입니다.

LinearBeforeReset

형식: BOOL

true 숨겨진 게이트의 출력을 계산할 때 다시 설정 게이트의 출력을 곱하기 전에 선형 변환을 적용해야 하므로 지정합니다. 그렇지 않으면 FALSE.

가용도

이 연산자는 DML_FEATURE_LEVEL_1_0도입되었습니다.

Tensor 제약 조건

BiasTensor, HiddenInitTensor, InputTensor, OutputSequenceTensor, OutputSingleTensor, RecurrenceTensorWeightTensor 동일한 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