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


структура DML_RNN_OPERATOR_DESC (directml.h)

Выполняет одноуровневую функцию простой рекуррентной нейронной сети (RNN) на входных данных. Эту функцию часто называют входным шлюзом. Этот оператор выполняет эту функцию несколько раз в цикле, продиктовано измерением длины последовательности и параметром SequenceLengthsTensor.

Уравнение для направления вперед

уравнение для направления вперед

Уравнение для направления назад

формула для направления назад

Условные обозначения уравнений

условные обозначения уравнений

Синтаксис

struct DML_RNN_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;
};

Члены

InputTensor

Тип: const DML_TENSOR_DESC*

Тензор, содержащий входные данные, X. Упакован (и потенциально заполнен) в один объемный тензор с размерами { 1, seq_length, batch_size, input_size }. seq_length — это измерение, сопоставленное с индексом, t. Тензор не поддерживает флаг DML_TENSOR_FLAG_OWNED_BY_DML .

WeightTensor

Тип: const DML_TENSOR_DESC*

Тензор, содержащий весовые данные W. Concatenation W_i и W_Bi (если они двунаправленные). Тензор имеет размеры { 1, num_directions, hidden_size, input_size }. Тензор не поддерживает флаг DML_TENSOR_FLAG_OWNED_BY_DML .

RecurrenceTensor

Тип: const DML_TENSOR_DESC*

Необязательный тензор, содержащий данные о весе повторения, R. Объединение R_i и R_Bi (если они двунаправленные). Этот тензор имеет размеры { 1, num_directions, hidden_size, hidden_size }. Тензор не поддерживает флаг DML_TENSOR_FLAG_OWNED_BY_DML .

BiasTensor

Тип: _Maybenull_ const DML_TENSOR_DESC*

Необязательный тензор, содержащий данные смещения для входного вентиля B. Concatenation { W_bi, R_bi }и { W_Bbi, R_Bbi } (если двунаправленный). Этот тензор имеет размеры { 1, 1, num_directions, 2 * 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 .

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(). Число функций активации равно количеству направлений. Для направления вперед и назад ожидается 1 функция активации. Для двунаправленных ожидается значение 2.

Direction

Тип: DML_RECURRENT_NETWORK_DIRECTION

Направление оператора: вперед, назад или двунаправленное.

Доступность

Этот оператор появился в DML_FEATURE_LEVEL_1_0.

Ограничения тензоров

BiasTensor, HiddenInitTensor, InputTensor, OutputSequenceTensor, OutputSingleTensor, RecurrenceTensor, и должны иметь один и WeightTensor тот же тип DataType.

Поддержка тензоров

Тензор Kind Поддерживаемые счетчики измерений Поддерживаемые типы данных
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