gru

Закрытый текущий модуль

Описание

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

Примечание

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

пример

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

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

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

[___] = 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);

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

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, бесформатный dlarray, или числовой массив. Когда dlX не отформатированный dlarray, необходимо задать формат этикетки размерности с помощью 'DataFormat',FMT. Если dlX числовой массив, по крайней мере один из H0, weights, recurrentWeights, или bias должен быть dlarray.

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

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

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

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

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

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

Веса в виде отформатированного dlarray, бесформатный dlarray, или числовой массив.

Задайте weights как матрица размера 3*NumHiddenUnits- InputSize, где NumHiddenUnits размер 'C' размерность H0, и InputSize размер 'C' размерность dlX умноженный на размер каждого 'S' размерность dlX, где существующий.

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

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

Текущие веса в виде отформатированного dlarray, бесформатный dlarray, или числовой массив.

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

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

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

Сместите в виде отформатированного dlarray, бесформатный dlarray, или числовой массив.

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

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

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

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

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

  • 'C' — Канал

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

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

  • 'U' — Незаданный

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

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

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

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

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

свернуть все

Выведенное ГРУ, возвратилось как 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 содержит слои заполнителя.

Больше о

свернуть все

Закрытый текущий модуль

Операция ГРУ позволяет сети изучать зависимости между временными шагами в данных о последовательности и временных рядах. Для получения дополнительной информации см. Закрытое Текущее Модульное определение Слоя на gruLayer страница с описанием.

Ссылки

[1] Чо, Kyunghyun, Барт Ван Мерриенбоер, Caglar Gulcehre, Dzmitry Bahdanau, Fethi Bougares, Хольгер Швенк и Иосуа Бенхио. "Изучая представления фразы с помощью декодера энкодера RNN для статистического машинного перевода". arXiv предварительно распечатывают arXiv:1406.1078 (2014).

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

Введенный в R2020a