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