exponenta event banner

gru

Стробированная рекуррентная установка

Описание

Работа стробируемого повторяющегося блока (ГРУ) позволяет сети узнать зависимости между временными шагами во временных рядах и данными последовательности.

Примечание

Эта функция применяет операцию глубокого обучения GRU к dlarray данные. Если вы хотите применить операцию GRU в layerGraph объект или Layer используйте следующий слой:

пример

dlY = gru(dlX,H0,weights,recurrentWeights,bias) применяет расчет стробируемой повторяющейся единицы (ГРУ) к входу dlX с использованием начального скрытого состояния H0, и параметры weights, recurrentWeights, и bias. Вход dlX является отформатированным dlarray с метками размеров. Продукция dlY является отформатированным dlarray с теми же метками размеров, что и dlX, за исключением любого 'S' размеры.

gru функция обновляет скрытое состояние, используя гиперболическую касательную функцию (tanh) в качестве функции активации состояния. gru функция использует в качестве функции активации затвора сигмоидную функцию, заданную (x) = (1 + e − x) − 1.

[dlY,hiddenState] = gru(dlX,H0,weights,recurrentWeights,bias) также возвращает скрытое состояние после операции GRU.

[___] = gru(___,'DataFormat',FMT) также задает формат размера FMT когда dlX не является отформатированным dlarray. Продукция dlY является неформатированным dlarray с тем же порядком размеров, что и dlX, за исключением любого 'S' размеры.

Примеры

свернуть все

Выполните операцию ГРУ с использованием 100 скрытых блоков.

Создайте входные данные последовательности как 32 наблюдения с десятью каналами и длиной последовательности 64.

numFeatures = 10;
numObservations = 32;
sequenceLength = 64;

X = randn(numFeatures,numObservations,sequenceLength);
dlX = dlarray(X,'CBT');

Создайте исходное скрытое состояние со 100 скрытыми единицами измерения. Используйте одно и то же исходное скрытое состояние для всех наблюдений.

numHiddenUnits = 100;
H0 = zeros(numHiddenUnits,1);

Создайте обучаемые параметры для операции GRU.

weights = dlarray(randn(3*numHiddenUnits,numFeatures));
recurrentWeights = dlarray(randn(3*numHiddenUnits,numHiddenUnits));
bias = dlarray(randn(3*numHiddenUnits,1));

Выполните расчет ГРУ.

[dlY,hiddenState] = gru(dlX,H0,weights,recurrentWeights,bias);

Просмотр размеров и меток размеров dlY.

size(dlY)
ans = 1×3

   100    32    64

dlY.dims
ans = 
'CBT'

Просмотр размера hiddenState.

size(hiddenState)
ans = 1×2

   100    32

Скрытое состояние можно использовать для отслеживания состояния операции ГРУ и ввода дальнейших последовательных данных.

Входные аргументы

свернуть все

Входные данные, указанные как dlarray с метками размеров или без них или числовым массивом. Когда dlX не является отформатированным dlarray, необходимо указать формат метки размера с помощью 'DataFormat',FMT. Если dlX - числовой массив, по крайней мере, один из H0, weights, recurrentWeights, или bias должно быть dlarray.

dlX должен содержать измерение последовательности с меткой 'T'. Если dlX имеет любые пространственные размеры, помеченные 'S', они сплющены в 'C' размер канала. Если dlX не имеет размера канала, то добавляется один. Если dlX имеет неуказанные размеры с меткой 'U'Они должны быть одиночными.

Типы данных: single | double

Начальный скрытый вектор состояния, заданный как dlarray с метками размеров или без них или числовым массивом.

Если H0 является отформатированным dlarray, он должен содержать измерение канала с меткой 'C' и, при необходимости, измерение партии с меткой 'B' с тем же размером, что и 'B' размерность dlX. Если H0 не имеет 'B' размерность, функция использует один и тот же скрытый вектор состояния для каждого наблюдения в dlX.

Если H0 является отформатированным dlarray, то размер 'C' размер определяет количество скрытых единиц измерения. В противном случае размер первого размера определяет количество скрытых единиц измерения.

Типы данных: single | double

Веса, указанные как dlarray с метками размеров или без них или числовым массивом.

Определить weights как матрица размера 3*NumHiddenUnitsоколо-InputSize, где NumHiddenUnits - размер 'C' размерность H0, и InputSize - размер 'C' размерность dlX умножается на размер каждого 'S' размерность dlX, где присутствует.

Если weights является отформатированным dlarray, он должен содержать 'C' размерность размера 3*NumHiddenUnits и 'U' размерность размера InputSize.

Типы данных: single | double

Повторяющиеся веса, указанные как dlarray с метками размеров или без них или числовым массивом.

Определить recurrentWeights как матрица размера 3*NumHiddenUnitsоколо-NumHiddenUnits, где NumHiddenUnits - размер 'C' размерность H0.

Если recurrentWeights является отформатированным dlarray, он должен содержать 'C' размерность размера 3*NumHiddenUnits и 'U' размерность размера NumHiddenUnits.

Типы данных: single | double

Смещение, указанное как dlarray с метками размеров или без них или числовым вектором.

Определить bias как вектор длины 3*NumHiddenUnits, где NumHiddenUnits - размер 'C' размерность H0.

Если bias является отформатированным dlarray, размер nonsingleton должен быть помечен 'C'.

Типы данных: single | double

Размерный порядок неформатированных входных данных, указанный как разделенная запятыми пара, состоящая из 'DataFormat' и символьный массив или строку FMT с меткой для каждого измерения данных. Каждый символ в FMT должен быть одним из следующих:

  • 'S' - Пространственный

  • 'C' - Канал

  • 'B' - Партия (например, пробы и наблюдения)

  • 'T' - Время (например, последовательности)

  • 'U' - Не указано

Можно указать несколько размеров с метками 'S' или 'U'. Можно использовать метки 'C', 'B', и 'T' максимум один раз.

Необходимо указать 'DataFormat',FMT когда входные данные dlX не является отформатированным dlarray.

Пример: 'DataFormat','SSCB'

Типы данных: char | string

Выходные аргументы

свернуть все

Выход GRU, возвращенный как dlarray. Продукция dlY имеет тот же базовый тип данных, что и входной dlX.

Если входные данные dlX является отформатированным dlarray, dlY имеет те же метки размеров, что и dlX, за исключением любого 'S' размеры. Если входные данные не являются форматированными dlarray, dlY является неформатированным dlarray с тем же порядком размеров, что и входные данные.

Размер 'C' размерность dlY совпадает с количеством скрытых единиц, определяемым размером 'C' размерность H0.

Скрытый вектор состояния для каждого наблюдения, возвращаемый как dlarray или числовой массив с тем же типом данных, что и H0.

Если вход H0 является отформатированным dlarray, то выход hiddenState является отформатированным dlarray с форматом 'CB'.

Ограничения

  • functionToLayerGraph не поддерживает gru функция. Если вы используете functionToLayerGraph с функцией, содержащей gru операция, результат LayerGraph содержит слои-заполнители.

Подробнее

свернуть все

Крытая периодическая группа

Операция GRU позволяет сети узнать зависимости между временными шагами во временных рядах и данными последовательности. Дополнительные сведения см. в разделе Определение уровня стробированных повторяющихся единиц измерения на вкладке gruLayer справочная страница.

Ссылки

[1] Чо, Кюнгхюн, Барт Ван Мерриэнбоер, Каглар Гульчехре, Дзмитри Бахданау, Фетхи Бугарес, Хольгер Швенк и Йошуа Бенгио. «Изучение представления фразы с использованием кодера-декодера RNN для статистического машинного перевода» arXiv preprint arXiv:1406.1078 (2014).

Расширенные возможности

Представлен в R2020a