В этом примере показано, как обучить нейронную сеть для глубокого обучения на данных о последовательности из памяти путем преобразования и объединения хранилищ данных.
Преобразованный datastore преобразовывает или данные о процессах, считанные из базового datastore. Можно использовать преобразованный datastore в качестве источника обучения, валидации, теста и наборов данных предсказания для применения глубокого обучения. Используйте преобразованные хранилища данных, чтобы считать данные, которые не помещаются в память, или выполнить определенные операции предварительной обработки при чтении пакетов данных. Когда у вас есть отдельные хранилища данных, содержащие предикторы и метки, можно объединить их так, можно ввести данные в нейронную сеть для глубокого обучения.
При обучении сети программное обеспечение создает мини-пакеты последовательностей той же длины путем дополнения, обрезая или разделяя входные данные. Для данных в оперативной памяти, trainingOptions
функция предоставляет возможности заполнять и обрезать входные последовательности, однако, для данных, которые не помещаются в память, необходимо заполнить и обрезать последовательности вручную.
Загрузите обучающие данные
Загрузите японский набор данных Гласных как описано в [1] и [2]. Zip-файл japaneseVowels.zip
содержит последовательности различной длины. Последовательности разделены на две папки, Train
и Test
, которые содержат обучающие последовательности и тестируют последовательности, соответственно. В каждой из этих папок последовательности разделены на подпапки, которые пронумерованы от 1
к 9
. Имена этих подпапок являются именами метки. Файл MAT представляет каждую последовательность. Каждая последовательность является матрицей с 12 строками, с одной строкой для каждой функции и различным количеством столбцов, с одним столбцом для каждого временного шага. Количество строк является размерностью последовательности, и количество столбцов является длиной последовательности.
Разархивируйте данные о последовательности.
Для учебных предикторов создайте datastore файла и задайте функцию чтения, чтобы быть load
функция. load
функция, загружает данные из MAT-файла в массив структур. Чтобы считать файлы из подпапок в учебной папке, установите 'IncludeSubfolders'
опция к true
.
Предварительно просмотрите datastore. Возвращенный struct содержит одну последовательность из первого файла.
ans = struct with fields:
X: [12×20 double]
Для меток создайте datastore файла и задайте функцию чтения, чтобы быть readLabel
функция, заданная в конце примера. readLabel
функционируйте извлекает метку из подымени папки.
Предварительно просмотрите datastore. Выход соответствует метке первого файла.
Преобразуйте и объедините хранилища данных
Чтобы ввести данные о последовательности из datastore предикторов к нейронной сети для глубокого обучения, мини-пакеты последовательностей должны иметь ту же длину. Преобразуйте datastore с помощью padSequence
функция, заданная в конце datastore, который заполняет или обрезает последовательности, чтобы иметь длину 20.
Предварительно просмотрите преобразованный datastore. Выход соответствует заполненной последовательности из первого файла.
X = 1×1 cell array
{12×20 double}
Чтобы ввести и предикторы и метки от обоих хранилищ данных в нейронную сеть для глубокого обучения, объедините их использующий combine
функция.
Предварительно просмотрите объединенный datastore. Datastore возвращает 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'
. Чтобы обучаться на графическом процессоре, при наличии, устанавливает 'ExecutionEnvironment'
к 'auto'
(значение по умолчанию).
Обучите сеть LSTM с заданными опциями обучения.
Протестируйте сеть
Создайте преобразованный datastore, содержащий протянутые тестовые данные с помощью тех же шагов что касается обучающих данных.
Сделайте предсказания на тестовых данных с помощью обучившего сеть.
Вычислите точность классификации на тестовые данные. Чтобы получить метки набора тестов, создайте datastore файла с функцией чтения readLabel
и задайте, чтобы включать подпапки. Укажите, что выходные параметры вертикально concatenateable путем установки 'UniformRead'
опция к true
.
Функции
readLabel
функционируйте извлекает метку из заданного имени файла по категориям в classNames
.
padSequence
функционируйте заполняет или обрезает последовательность в data.X
иметь заданную длину последовательности и возвращает результат в ячейку 1 на 1.