Поделиться через


структура 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. Объединение 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

Тип: _Возможноnull_ 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

Тип: _Возможноnull_ const DML_TENSOR_DESC*

Необязательный тензор, содержащий тензор инициализатора скрытого узла, H_t-1 для первого индекса цикла t. Если значение не указано, значение по умолчанию — 0. Этот тензор имеет размеров{ 1, num_directions, batch_size, hidden_size }. Тензор не поддерживает флаг DML_TENSOR_FLAG_OWNED_BY_DML.

SequenceLengthsTensor

Тип: _Возможноnull_ const DML_TENSOR_DESC*

Необязательный тензор, содержащий независимый seq_length для каждого элемента в пакете. Если не указано, все последовательности в пакете имеют длину seq_length. Этот тензор имеет размеров{ 1, 1, 1, batch_size }. Тензор не поддерживает флаг DML_TENSOR_FLAG_OWNED_BY_DML.

OutputSequenceTensor

Тип: _Возможноnull_ const DML_TENSOR_DESC*

Необязательный тензор, с помощью которого выполняется запись объединения всех промежуточных выходных значений скрытых узлов, H_t. Этот тензор имеет размеров{ seq_length, num_directions, batch_size, hidden_size }. seq_length сопоставляется с индексом цикла t.

OutputSingleTensor

Тип: _Возможноnull_ 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_FORWARD или DML_RECURRENT_NETWORK_DIRECTION_BACKWARD предоставляются в направление, необходимо предоставить два активации. Если DML_RECURRENT_NETWORK_DIRECTION_BIDIRECTIONAL предоставляется, необходимо предоставить четыре активации. Для двунаправленных активаций необходимо предоставить 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, RecurrenceTensorи WeightTensor должны иметь одинаковые DataType.

Поддержка Tensor

Тензор Добрый Поддерживаемые счетчики измерений Поддерживаемые типы данных
InputTensor Ввод 4 FLOAT32, FLOAT16
WeightTensor Ввод 4 FLOAT32, FLOAT16
ПовторениеTensor Ввод 4 FLOAT32, FLOAT16
Предвзятость Необязательные входные данные 4 FLOAT32, FLOAT16
HiddenInitTensor Необязательные входные данные 4 FLOAT32, FLOAT16
SequenceLengthsTensor Необязательные входные данные 4 UINT32
OutputSequenceTensor Необязательные выходные данные 4 FLOAT32, FLOAT16
OutputSingleTensor Необязательные выходные данные 4 FLOAT32, FLOAT16

Требования

Требование Ценность
заголовка directml.h