В этом примере показано, как обучить сеть глубокого обучения данным последовательности без памяти путем преобразования и объединения хранилищ данных.
Преобразованное хранилище данных преобразует или обрабатывает данные, считанные из базового хранилища данных. Преобразованное хранилище данных можно использовать в качестве источника наборов данных обучения, проверки, тестирования и прогнозирования для приложений глубокого обучения. Использование преобразованных хранилищ данных для считывания данных из памяти или выполнения определенных операций предварительной обработки при считывании пакетов данных. При наличии отдельных хранилищ данных, содержащих предикторы и метки, их можно объединить для ввода данных в сеть глубокого обучения.
При обучении сети программное обеспечение создает мини-пакеты последовательностей одинаковой длины путем заполнения, усечения или разделения входных данных. Для данных в памяти, trainingOptions функция предоставляет опции для вставки и усечения входных последовательностей, однако для данных, не находящихся в памяти, необходимо вставлять и усекать последовательности вручную.
Загрузка данных обучения
Загрузите набор данных японских гласных, как описано в [1] и [2]. Zip-файл japaneseVowels.zip содержит последовательности различной длины. Последовательности разделены на две папки, Train и Test, которые содержат обучающие последовательности и тестовые последовательности соответственно. В каждой из этих папок последовательности делятся на подпапки, которые нумеруются из 1 кому 9. Имена этих подпапок являются именами меток. MAT-файл представляет каждую последовательность. Каждая последовательность является матрицей с 12 строками, с одной строкой для каждого элемента и различным количеством столбцов, с одним столбцом для каждого временного шага. Число строк - это измерение последовательности, а число столбцов - длина последовательности.
Распакуйте данные последовательности.
Для обучающих предикторов создайте хранилище данных файла и укажите функцию чтения, которая будет load функция. load загружает данные из MAT-файла в структурный массив. Для чтения файлов из подпапок в учебной папке установите 'IncludeSubfolders' опция для true.
Предварительный просмотр хранилища данных. Возвращенная структура содержит одну последовательность из первого файла.
ans = struct with fields:
X: [12×20 double]
Для меток создайте хранилище данных файла и укажите функцию чтения, которая будет readLabel , определенной в конце примера. readLabel извлекает метку из имени подпапки.
Предварительный просмотр хранилища данных. Выходные данные соответствуют метке первого файла.
Преобразование и объединение хранилищ данных
Чтобы ввести данные последовательности из хранилища данных предикторов в сеть глубокого обучения, мини-пакеты последовательностей должны иметь одинаковую длину. Преобразование хранилища данных с помощью padSequence функция, определенная в конце хранилища данных, которая помещает или усекает последовательности, имеющие длину 20.
Предварительный просмотр преобразованного хранилища данных. Выходные данные соответствуют дополненной последовательности из первого файла.
X = 1×1 cell array
{12×20 double}
Чтобы ввести как предикторы, так и метки из обоих хранилищ данных в сеть глубокого обучения, объедините их с помощью combine функция.
Предварительный просмотр объединенного хранилища данных. Хранилище данных возвращает массив ячеек 1 на 2. Первый элемент соответствует предикторам. Второй элемент соответствует метке.
ans = 1×2 cell array
{12×20 double} {[1]}
Определение сетевой архитектуры LSTM
Определите архитектуру сети LSTM. Укажите количество элементов входных данных в качестве размера входных данных. Укажите уровень LSTM со 100 скрытыми единицами измерения и для вывода последнего элемента последовательности. Наконец, укажите полностью подключенный уровень с размером выхода, равным числу классов, за которым следуют уровень softmax и уровень классификации.
Укажите параметры обучения. Задайте для решателя значение 'adam' и 'GradientThreshold' на 2. Установите размер мини-партии равным 27 и максимальное количество периодов равным 75. Хранилища данных не поддерживают тасование, поэтому установите 'Shuffle' кому 'never'.
Поскольку мини-пакеты малы с короткими последовательностями, ЦП лучше подходит для обучения. Набор 'ExecutionEnvironment' кому 'cpu'. Обучение на GPU, если доступно, установить 'ExecutionEnvironment' кому 'auto' (значение по умолчанию).
Обучение сети LSTM с указанными вариантами обучения.
Тестирование сети
Создайте преобразованное хранилище данных, содержащее задержанные тестовые данные, используя те же шаги, что и для учебных данных.
Составление прогнозов по данным тестирования с использованием обученной сети.
Рассчитайте точность классификации по данным теста. Чтобы получить метки тестового набора, создайте хранилище данных файла с функцией чтения readLabel и укажите, чтобы включить вложенные папки. Укажите, что выходы являются вертикально сцепляемыми, задав значение 'UniformRead' опция для true.
Функции
readLabel извлекает метку из указанного имени файла по категориям в classNames.
padSequence панель функций или усечение последовательности в data.X чтобы иметь заданную длину последовательности и возвращает результат в ячейке 1 на 1.