Двунаправленный долгий краткосрочный слой (BiLSTM) памяти
Двунаправленный слой LSTM (BiLSTM) изучает двунаправленные долгосрочные зависимости между временными шагами данных о последовательности или временных рядов. Эти зависимости могут быть полезными когда это необходимо сеть, чтобы извлечь уроки из полных временных рядов на каждом временном шаге.
layer = bilstmLayer(numHiddenUnits)
layer = bilstmLayer(numHiddenUnits,Name,Value)
создает двунаправленный слой LSTM и устанавливает свойство layer
= bilstmLayer(numHiddenUnits
)NumHiddenUnits
.
устанавливает дополнительный layer
= bilstmLayer(numHiddenUnits
,Name,Value
)OutputMode
, Активации, Параметры и Инициализация, Изучают Уровень и Регуляризацию и свойства Name
с помощью одного или нескольких аргументов пары "имя-значение". Можно задать несколько аргументов пары "имя-значение". Заключите каждое имя свойства в кавычки.
NumHiddenUnits
— Количество скрытых модулейКоличество скрытых модулей (также известный как скрытый размер), заданный как положительное целое число.
Количество скрытых модулей соответствует объему информации, который помнят между временными шагами (скрытое состояние). Скрытое состояние может содержать информацию от всех предыдущих временных шагов, независимо от длины последовательности. Если количество скрытых модулей является слишком большим, то слой может сверхсоответствовать к данным тренировки. Это значение может отличаться от нескольких дюжин до нескольких тысяч.
Скрытое состояние не ограничивает количество временных шагов, обрабатываются в итерации. Чтобы разделить ваши последовательности в меньшие последовательности для обучения, используйте опцию 'SequenceLength'
в trainingOptions
.
Пример: 200
OutputMode
— Формат вывода'sequence'
(значение по умолчанию) | 'last'
Формат вывода, заданного как одно из следующего:
'sequence'
– Выведите полную последовательность.
'last'
– Выведите последний временной шаг последовательности.
InputSize
— Введите размер'auto'
(значение по умолчанию) | положительное целое число Введите размер, заданный как положительное целое число или 'auto'
. Если InputSize
является 'auto'
, то программное обеспечение автоматически присваивает входной размер в учебное время.
Пример: 100
StateActivationFunction
— Функция активации, чтобы обновить ячейку и скрытое состояние'tanh'
(значение по умолчанию) | 'softsign'
Функция активации, чтобы обновить ячейку и скрытое состояние, заданное как одно из следующего:
tanh
Используйте гиперболическую функцию тангенса (tanh).
'softsign'
– Используйте функцию softsign .
Слой использует эту опцию в качестве функции в вычислениях, чтобы обновить ячейку и скрытое состояние. Для получения дополнительной информации о том, как функции активации используются в слое LSTM, видят Слой Long Short-Term Memory.
GateActivationFunction
— Функция активации, чтобы примениться к логическим элементам'sigmoid'
(значение по умолчанию) | 'hard-sigmoid'
Функция активации, чтобы примениться к логическим элементам, заданным как одно из следующего:
'sigmoid'
– Используйте сигмоидальную функцию .
'hard-sigmoid'
– Используйте трудную сигмоидальную функцию
Слой использует эту опцию в качестве функции в вычислениях для входа, выводе, и забывают логический элемент. Для получения дополнительной информации о том, как функции активации используются в слое LSTM, видят Слой Long Short-Term Memory.
CellState
— Начальное значение состояния ячейкиНачальное значение состояния ячейки, заданного как 2*NumHiddenUnits
-by-1 числовой вектор. Это значение соответствует состоянию ячейки на временном шаге 0.
После установки этого свойства вызовы функции resetState
устанавливают состояние ячейки на это значение.
HiddenState
— Начальное значение скрытого состоянияНачальное значение скрытого состояния, заданного как 2*NumHiddenUnits
-by-1 числовой вектор. Это значение соответствует скрытому состоянию на временном шаге 0.
После установки этого свойства вызовы функции resetState
устанавливают скрытое состояние на это значение.
InputWeightsInitializer
— Функция, чтобы инициализировать входные веса'glorot'
(значение по умолчанию) | 'he'
| 'orthogonal'
| 'narrow-normal'
| 'zeros'
| 'ones'
| указатель на функциюФункция, чтобы инициализировать входные веса, заданные как одно из следующего:
'glorot'
– Инициализируйте входные веса с инициализатором Glorot [1] (также известный как инициализатор Ксавьера). Инициализатор Glorot независимо выборки от равномерного распределения с нулевым средним значением и отклонением 2/(InputSize + numOut)
, где numOut = 8*NumHiddenUnits
.
'he'
– Инициализируйте входные веса с Ним инициализатор [2]. Он выборки инициализатора от нормального распределения с нулевым средним значением и отклонением 2/InputSize
.
'orthogonal'
– Инициализируйте входные веса с Q, ортогональная матрица, данная разложением QR Z = Q R для случайного матричного Z, выбранного от модульного нормального распределения. [3]
'narrow-normal'
– Инициализируйте входные веса путем независимой выборки от нормального распределения с нулевым средним и стандартным отклонением 0.01.
нули
Инициализируйте входные веса с нулями.
единицы
Инициализируйте входные веса с единицами.
Указатель на функцию – Инициализирует входные веса с пользовательской функцией. Если вы задаете указатель на функцию, то функция должна иметь форму weights = func(sz)
, где sz
является размером входных весов.
Слой только инициализирует входные веса, когда свойство InputWeights
пусто.
Типы данных: char
| string
| function_handle
RecurrentWeightsInitializer
— Функция, чтобы инициализировать текущие веса'orthogonal'
(значение по умолчанию) | 'glorot'
| 'he'
| 'narrow-normal'
| 'zeros'
| 'ones'
| указатель на функциюФункция, чтобы инициализировать текущие веса, заданные как одно из следующего:
'orthogonal'
– Инициализируйте входные веса с Q, ортогональная матрица, данная разложением QR Z = Q R для случайного матричного Z, выбранного от модульного нормального распределения. [3]
'glorot'
– Инициализируйте текущие веса с инициализатором Glorot [1] (также известный как инициализатор Ксавьера). Инициализатор Glorot независимо выборки от равномерного распределения с нулевым средним значением и отклонением 2/(numIn + numOut)
, где numIn = NumHiddenUnits
и numOut = 8*NumHiddenUnits
.
'he'
– Инициализируйте текущие веса с Ним инициализатор [2]. Он выборки инициализатора от нормального распределения с нулевым средним значением и отклонением 2/NumHiddenUnits
.
'narrow-normal'
– Инициализируйте текущие веса путем независимой выборки от нормального распределения с нулевым средним и стандартным отклонением 0.01.
нули
Инициализируйте текущие веса с нулями.
единицы
Инициализируйте текущие веса с единицами.
Указатель на функцию – Инициализирует текущие веса с пользовательской функцией. Если вы задаете указатель на функцию, то функция должна иметь форму weights = func(sz)
, где sz
является размером текущих весов.
Слой только инициализирует текущие веса, когда свойство RecurrentWeights
пусто.
Типы данных: char
| string
| function_handle
BiasInitializer
— Функция, чтобы инициализировать смещение'unit-forget-gate'
(значение по умолчанию) | 'narrow-normal'
| 'ones'
| указатель на функциюФункция, чтобы инициализировать смещение, заданное как одно из следующего:
'unit-forget-gate'
– Инициализируйте забыть смещение затвора с единицами и остающиеся смещения с нулями.
'narrow-normal'
– Инициализируйте смещение путем независимой выборки от нормального распределения с нулевым средним и стандартным отклонением 0.01.
единицы
Инициализируйте смещение с единицами.
Указатель на функцию – Инициализирует смещение с пользовательской функцией. Если вы задаете указатель на функцию, то функция должна иметь форму bias = func(sz)
, где sz
является размером смещения.
Слой только инициализирует смещение, когда свойство Bias
пусто.
Типы данных: char
| string
| function_handle
InputWeights
— Введите веса[]
(значение по умолчанию) | матрицаВведите веса, заданные как матрица.
Входная матрица веса является конкатенацией восьми входных матриц веса для компонентов (логические элементы) в двунаправленном слое LSTM. Эти восемь матриц конкатенированы вертикально в следующем порядке:
Введите логический элемент (Вперед)
Забудьте логический элемент (Вперед)
Кандидат ячейки (Вперед)
Выведите логический элемент (Вперед)
Введите логический элемент (Назад)
Забудьте логический элемент (Назад)
Кандидат ячейки (Назад)
Выведите логический элемент (Назад)
Входные веса являются learnable параметрами. При обучении сети, если InputWeights
непуст, то trainNetwork
использует свойство InputWeights
в качестве начального значения. Если InputWeights
пуст, то trainNetwork
использует инициализатор, заданный InputWeightsInitializer
.
В учебное время InputWeights
является 8*NumHiddenUnits
-by-InputSize
матрица.
RecurrentWeights
— Текущие веса[]
(значение по умолчанию) | матрицаТекущие веса, заданные как матрица.
Текущая матрица веса является конкатенацией восьми текущих матриц веса для компонентов (логические элементы) в двунаправленном слое LSTM. Эти восемь матриц конкатенированы вертикально в следующем порядке:
Введите логический элемент (Вперед)
Забудьте логический элемент (Вперед)
Кандидат ячейки (Вперед)
Выведите логический элемент (Вперед)
Введите логический элемент (Назад)
Забудьте логический элемент (Назад)
Кандидат ячейки (Назад)
Выведите логический элемент (Назад)
Текущие веса являются learnable параметрами. При обучении сети, если RecurrentWeights
непуст, то trainNetwork
использует свойство RecurrentWeights
в качестве начального значения. Если RecurrentWeights
пуст, то trainNetwork
использует инициализатор, заданный RecurrentWeightsInitializer
.
В учебное время RecurrentWeights
является 8*NumHiddenUnits
-by-NumHiddenUnits
матрица.
Bias
— Смещения слоя[]
(значение по умолчанию) | числовой векторСмещения слоя, заданные как числовой вектор.
Вектор смещения является конкатенацией восьми векторов смещения для компонентов (логические элементы) в двунаправленном слое LSTM. Эти восемь векторов конкатенированы вертикально в следующем порядке:
Введите логический элемент (Вперед)
Забудьте логический элемент (Вперед)
Кандидат ячейки (Вперед)
Выведите логический элемент (Вперед)
Введите логический элемент (Назад)
Забудьте логический элемент (Назад)
Кандидат ячейки (Назад)
Выведите логический элемент (Назад)
Смещения слоя являются learnable параметрами. При обучении сети, если Bias
непуст, то trainNetwork
использует свойство Bias
в качестве начального значения. Если Bias
пуст, то trainNetwork
использует инициализатор, заданный BiasInitializer
.
В учебное время Bias
является 8*NumHiddenUnits
-by-1 числовой вектор.
InputWeightsLearnRateFactor
— Фактор темпа обучения для входных весовФактор темпа обучения для входных весов, заданных в виде числа или 1 8 числового вектора.
Программное обеспечение умножает этот фактор на глобальный темп обучения, чтобы определить фактор темпа обучения для входных весов слоя. Например, если InputWeightsLearnRateFactor
равняется 2, то фактором темпа обучения для входных весов слоя является дважды текущий глобальный темп обучения. Программное обеспечение определяет глобальный темп обучения на основе настроек, заданных с функцией trainingOptions
.
Чтобы управлять значением фактора темпа обучения для четырех отдельных матриц в InputWeights
, присвойте 1 8 вектор, где записи соответствуют фактору темпа обучения следующего:
Введите логический элемент (Вперед)
Забудьте логический элемент (Вперед)
Кандидат ячейки (Вперед)
Выведите логический элемент (Вперед)
Введите логический элемент (Назад)
Забудьте логический элемент (Назад)
Кандидат ячейки (Назад)
Выведите логический элемент (Назад)
Чтобы задать то же значение для всех матриц, задайте неотрицательный скаляр.
Пример: 0.1
RecurrentWeightsLearnRateFactor
— Фактор темпа обучения для текущих весовФактор темпа обучения для текущих весов, заданных в виде числа или 1 8 числового вектора.
Программное обеспечение умножает этот фактор на глобальный темп обучения, чтобы определить темп обучения для текущих весов слоя. Например, если RecurrentWeightsLearnRateFactor
равняется 2, то темп обучения для текущих весов слоя является дважды текущим глобальным темпом обучения. Программное обеспечение определяет глобальный темп обучения на основе настроек, заданных с функцией trainingOptions
.
Чтобы управлять значением изучить уровня для четырех отдельных матриц в RecurrentWeights
, присвойте 1 8 вектор, где записи соответствуют фактору темпа обучения следующего:
Введите логический элемент (Вперед)
Забудьте логический элемент (Вперед)
Кандидат ячейки (Вперед)
Выведите логический элемент (Вперед)
Введите логический элемент (Назад)
Забудьте логический элемент (Назад)
Кандидат ячейки (Назад)
Выведите логический элемент (Назад)
Чтобы задать то же значение для всех матриц, задайте неотрицательный скаляр.
Пример: 0.1
Пример:
[1 2 1 1 1 2 1 1]
BiasLearnRateFactor
— Фактор темпа обучения для смещенийФактор темпа обучения для смещений, заданных как неотрицательный скаляр или 1 8 числовой вектор.
Программное обеспечение умножает этот фактор на глобальный темп обучения, чтобы определить темп обучения для смещений в этом слое. Например, если BiasLearnRateFactor
равняется 2, то темп обучения для смещений в слое является дважды текущим глобальным темпом обучения. Программное обеспечение определяет глобальный темп обучения на основе настроек, заданных с функцией trainingOptions
.
Чтобы управлять значением фактора темпа обучения для четырех отдельных матриц в Bias
, присвойте 1 8 вектор, где записи соответствуют фактору темпа обучения следующего:
Введите логический элемент (Вперед)
Забудьте логический элемент (Вперед)
Кандидат ячейки (Вперед)
Выведите логический элемент (Вперед)
Введите логический элемент (Назад)
Забудьте логический элемент (Назад)
Кандидат ячейки (Назад)
Выведите логический элемент (Назад)
Чтобы задать то же значение для всех матриц, задайте неотрицательный скаляр.
Пример 2
Пример:
[1 2 1 1 1 2 1 1]
InputWeightsL2Factor
— Фактор регуляризации L2 для входных весовФактор регуляризации L2 для входных весов, заданных в виде числа или 1 8 числового вектора.
Программное обеспечение умножает этот фактор на глобальный фактор регуляризации L2, чтобы определить фактор регуляризации L2 для входных весов слоя. Например, если InputWeightsL2Factor
равняется 2, то фактором регуляризации L2 для входных весов слоя является дважды текущий глобальный фактор регуляризации L2. Программное обеспечение определяет фактор регуляризации L2 на основе настроек, заданных с функцией trainingOptions
.
Чтобы управлять значением фактора регуляризации L2 для четырех отдельных матриц в InputWeights
, присвойте 1 8 вектор, где записи соответствуют фактору регуляризации L2 следующего:
Введите логический элемент (Вперед)
Забудьте логический элемент (Вперед)
Кандидат ячейки (Вперед)
Выведите логический элемент (Вперед)
Введите логический элемент (Назад)
Забудьте логический элемент (Назад)
Кандидат ячейки (Назад)
Выведите логический элемент (Назад)
Чтобы задать то же значение для всех матриц, задайте неотрицательный скаляр.
Пример: 0.1
Пример:
[1 2 1 1 1 2 1 1]
RecurrentWeightsL2Factor
— Фактор регуляризации L2 для текущих весовФактор регуляризации L2 для текущих весов, заданных в виде числа или 1 8 числового вектора.
Программное обеспечение умножает этот фактор на глобальный фактор регуляризации L2, чтобы определить фактор регуляризации L2 для текущих весов слоя. Например, если RecurrentWeightsL2Factor
равняется 2, то фактором регуляризации L2 для текущих весов слоя является дважды текущий глобальный фактор регуляризации L2. Программное обеспечение определяет фактор регуляризации L2 на основе настроек, заданных с функцией trainingOptions
.
Чтобы управлять значением фактора регуляризации L2 для четырех отдельных матриц в RecurrentWeights
, присвойте 1 8 вектор, где записи соответствуют фактору регуляризации L2 следующего:
Введите логический элемент (Вперед)
Забудьте логический элемент (Вперед)
Кандидат ячейки (Вперед)
Выведите логический элемент (Вперед)
Введите логический элемент (Назад)
Забудьте логический элемент (Назад)
Кандидат ячейки (Назад)
Выведите логический элемент (Назад)
Чтобы задать то же значение для всех матриц, задайте неотрицательный скаляр.
Пример: 0.1
Пример:
[1 2 1 1 1 2 1 1]
BiasL2Factor
— Фактор регуляризации L2 для смещенийФактор регуляризации L2 для смещений, заданных как неотрицательный скаляр.
Программное обеспечение умножает этот фактор на глобальный фактор регуляризации L2, чтобы определить регуляризацию L2 для смещений в этом слое. Например, если BiasL2Factor
равняется 2, то регуляризация L2 для смещений в этом слое является дважды глобальным фактором регуляризации L2. Можно задать глобальный фактор регуляризации L2 использование функции trainingOptions
.
Чтобы управлять значением фактора регуляризации L2 для четырех отдельных матриц в Bias
, присвойте 1 8 вектор, где записи соответствуют фактору регуляризации L2 следующего:
Введите логический элемент (Вперед)
Забудьте логический элемент (Вперед)
Кандидат ячейки (Вперед)
Выведите логический элемент (Вперед)
Введите логический элемент (Назад)
Забудьте логический элемент (Назад)
Кандидат ячейки (Назад)
Выведите логический элемент (Назад)
Чтобы задать то же значение для всех матриц, задайте неотрицательный скаляр.
Пример 2
Пример:
[1 2 1 1 1 2 1 1]
Имя
Имя слоя''
(значение по умолчанию) | вектор символов | представляет скаляр в виде строкиИмя слоя, заданное как вектор символов или скаляр строки. Если Name
установлен в ''
, то программное обеспечение автоматически присваивает имя в учебное время.
Типы данных: char | string
NumInputs
— Количество входных параметровКоличество входных параметров слоя. Этот слой принимает один вход только.
Типы данных: double
InputNames
— Введите имена{'in'}
(значение по умолчанию)Введите имена слоя. Этот слой принимает один вход только.
Типы данных: cell
NumOutputs
Количество выходных параметровКоличество выходных параметров слоя. Этот слой имеет один вывод только.
Типы данных: double
OutputNames
— Выведите имена{'out'}
(значение по умолчанию)Выведите имена слоя. Этот слой имеет один вывод только.
Типы данных: cell
Создайте двунаправленный слой LSTM с именем 'bilstm1'
и 100 скрытых модулей.
layer = bilstmLayer(100,'Name','bilstm1')
layer = BiLSTMLayer with properties: Name: 'bilstm1' Hyperparameters InputSize: 'auto' NumHiddenUnits: 100 OutputMode: 'sequence' StateActivationFunction: 'tanh' GateActivationFunction: 'sigmoid' Learnable Parameters InputWeights: [] RecurrentWeights: [] Bias: [] State Parameters HiddenState: [] CellState: [] Show all properties
Включайте двунаправленный слой LSTM в массив Layer
.
inputSize = 12;
numHiddenUnits = 100;
numClasses = 9;
layers = [ ...
sequenceInputLayer(inputSize)
bilstmLayer(numHiddenUnits)
fullyConnectedLayer(numClasses)
softmaxLayer
classificationLayer]
layers = 5x1 Layer array with layers: 1 '' Sequence Input Sequence input with 12 dimensions 2 '' BiLSTM BiLSTM with 100 hidden units 3 '' Fully Connected 9 fully connected layer 4 '' Softmax softmax 5 '' Classification Output crossentropyex
Поведение изменяется в R2019a
Начиная в R2019a, программное обеспечение, по умолчанию, инициализирует входные веса слоя этого слоя с помощью инициализатора Glorot. Это поведение помогает стабилизировать обучение и обычно уменьшает учебное время глубоких сетей.
В предыдущих релизах программное обеспечение, по умолчанию, инициализирует входные веса слоя с помощью путем выборки от нормального распределения с нулевым средним значением и отклонением 0.01. Чтобы воспроизвести это поведение, установите опцию 'InputWeightsInitializer'
слоя к 'narrow-normal'
.
Поведение изменяется в R2019a
Начиная в R2019a, программное обеспечение, по умолчанию, инициализирует слой текущие веса этого слоя с Q, ортогональная матрица, данная разложением QR Z = Q R для случайного матричного Z, выбранного от модульного нормального распределения. Это поведение помогает стабилизировать обучение и обычно уменьшает учебное время глубоких сетей.
В предыдущих релизах программное обеспечение, по умолчанию, инициализирует слой текущие веса с помощью путем выборки от нормального распределения с нулевым средним значением и отклонением 0.01. Чтобы воспроизвести это поведение, установите опцию 'RecurrentWeightsInitializer'
слоя к 'narrow-normal'
.
[1] Glorot, Ксавьер и Иосуа Бенхио. "Понимая трудность учебных глубоких feedforward нейронных сетей". В Продолжениях тринадцатой международной конференции по вопросам искусственного интеллекта и статистики, стр 249-256. 2010.
[2] Он, Kaiming, Сянюй Чжан, Шаоцин Жэнь и Цзянь Сунь. "Копаясь глубоко в выпрямителях: Превосходная производительность человеческого уровня на imagenet классификации". В Продолжениях международной конференции IEEE по вопросам компьютерного зрения, стр 1026-1034. 2015.
[3] Saxe, Эндрю М., Джеймс Л. Макклеллэнд и Сурья Гэнгули. "Точные решения нелинейной динамики изучения в глубоких линейных нейронных сетях". arXiv предварительно распечатывают arXiv:1312.6120 (2013).
classifyAndUpdateState
| flattenLayer
| lstmLayer
| predictAndUpdateState
| resetState
| sequenceFoldingLayer
| sequenceInputLayer
| sequenceUnfoldingLayer
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.