структура 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 |