В этом примере показано, как создать простую сеть классификации LSTM с помощью Deep Network Designer.
Для обучения глубокой нейронной сети классификации данных последовательности можно использовать сеть LSTM. Сеть LSTM - это тип рекуррентной нейронной сети (RNN), которая изучает долгосрочные зависимости между временными шагами данных последовательности.
В примере показано, как:
Загрузить данные последовательности.
Создайте архитектуру сети.
Укажите параметры обучения.
Обучение сети.
Спрогнозировать метки новых данных и рассчитать точность классификации.
Загрузите набор данных японских гласных, как описано в [1] и [2]. Предикторы представляют собой клеточные массивы, содержащие последовательности различной длины с характерной размерностью 12. Метки являются категориальными векторами меток 1,2,..., 9.
[XTrain,YTrain] = japaneseVowelsTrainData; [XValidation,YValidation] = japaneseVowelsTestData;
Просмотрите размеры первых нескольких тренировочных последовательностей. Последовательности представляют собой матрицы с 12 строками (по одной строке для каждого признака) и различным количеством столбцов (по одному столбцу для каждого временного шага).
XTrain(1:5)
ans=5×1 cell array
{12×20 double}
{12×26 double}
{12×22 double}
{12×20 double}
{12×21 double}
Откройте конструктор глубоких сетей.
deepNetworkDesigner
Приостановите операцию «Последовательность для метки» и нажмите кнопку «Открыть». Это открывает предварительно созданную сеть, подходящую для проблем классификации последовательностей.

Deep Network Designer отображает предварительно созданную сеть.

Эту сеть последовательностей можно легко адаптировать для набора данных Vowels на японском языке.
Выберите последовательность InputLayer и убедитесь, что для параметра InputSize задано значение 12 для соответствия размерности элемента.

Выберите lstmLayer и установите значение NumHiddenUnits равным 100.

Выберите FulureConnectedLayer и убедитесь, что для параметра OutputSize установлено значение 9, т.е. количество классов.

Чтобы проверить сеть и просмотреть дополнительные сведения о слоях, щелкните Анализ (Analyze).

Чтобы экспортировать сетевую архитектуру в рабочую область, на вкладке Конструктор нажмите кнопку Экспорт. Deep Network Designer сохраняет сеть в качестве переменной layers_1.
Также можно создать код для построения сетевой архитектуры, выбрав «Экспорт» > «Создать код».
Укажите параметры обучения и обучите сеть.
Поскольку мини-пакеты малы с короткими последовательностями, ЦП лучше подходит для обучения. Набор 'ExecutionEnvironment' кому 'cpu'. Обучение на GPU, если доступно, установить 'ExecutionEnvironment' кому 'auto' (значение по умолчанию).
miniBatchSize = 27; options = trainingOptions('adam', ... 'ExecutionEnvironment','cpu', ... 'MaxEpochs',100, ... 'MiniBatchSize',miniBatchSize, ... 'ValidationData',{XValidation,YValidation}, ... 'GradientThreshold',2, ... 'Shuffle','every-epoch', ... 'Verbose',false, ... 'Plots','training-progress');
Обучение сети.
net = trainNetwork(XTrain,YTrain,layers_1,options);

Классифицируйте данные теста и рассчитайте точность классификации. Укажите тот же размер мини-партии, что и для обучения.
YPred = classify(net,XValidation,'MiniBatchSize',miniBatchSize);
acc = mean(YPred == YValidation)acc = 0.9432
Для выполнения следующих шагов можно попытаться повысить точность, используя двунаправленные уровни LSTM (BiLSTM) или создав более глубокую сеть. Дополнительные сведения см. в разделе Сети долговременной памяти.
Пример использования сверточных сетей для классификации данных последовательности см. в разделе Распознавание речевых команд с помощью глубокого обучения.
[1] Кудо, Минэйчи, Дзюн Тояма и Масару Симбо. «Многомерная классификация кривых с использованием сквозных областей». Письма 20, № 11-13 (ноябрь 1999 года): 1103-11. https://doi.org/10.1016/S0167-8655 (99) 00077-X.
[2] Кудо, Минэйчи, Дзюн Тояма и Масару Симбо. Набор данных гласных на японском языке. Распространяется репозитарием машинного обучения UCI. https://archive.ics.uci.edu/ml/datasets/Japanese+Vowels