sequenceFoldingLayer

Слой сворачивания последовательности

Описание

Слой сворачивания последовательности преобразует пакет последовательностей изображений к пакету изображений. Используйте слой сворачивания последовательности, чтобы выполнить операции свертки на временных шагах последовательностей изображений независимо.

Чтобы использовать слой сворачивания последовательности, необходимо соединить miniBatchSize выведите к miniBatchSize вход соответствующего слоя разворачивания последовательности. Для примера смотрите, Создают Сеть для Видео Классификации.

Создание

Описание

layer = sequenceFoldingLayer создает слой сворачивания последовательности.

пример

layer = sequenceFoldingLayer('Name',Name) создает слой сворачивания последовательности и устанавливает дополнительный Name свойство с помощью пары "имя-значение". Например, sequenceFoldingLayer('Name','fold1') создает слой сворачивания последовательности с именем 'fold1'. Заключите имя свойства в одинарные кавычки.

Свойства

развернуть все

Имя слоя в виде вектора символов или строкового скаляра. Чтобы включать слой в график слоев, необходимо задать непустое уникальное имя слоя. Если вы обучаете серийную сеть со слоем и Name установлен в '', затем программное обеспечение автоматически присваивает имя к слою в учебное время.

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

Количество входных параметров слоя. Этот слой принимает один вход только.

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

Введите имена слоя. Этот слой принимает один вход только.

Типы данных: cell

Количество выходных параметров слоя.

Слой имеет два выходных параметров:

  • 'out' – Выведите карту функции, соответствующую измененному входу.

  • 'miniBatchSize' – Размер мини-пакета передается на слой. Этот выход должен быть соединен с 'miniBatchSize' вход соответствующего слоя разворачивания последовательности.

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

Выведите имена слоя.

Слой имеет два выходных параметров:

  • 'out' – Выведите карту функции, соответствующую измененному входу.

  • 'miniBatchSize' – Размер мини-пакета передается на слой. Этот выход должен быть соединен с 'miniBatchSize' вход соответствующего слоя разворачивания последовательности.

Типы данных: cell

Примеры

свернуть все

Создайте слой сворачивания последовательности с именем 'fold1'.

layer = sequenceFoldingLayer('Name','fold1')
layer = 
  SequenceFoldingLayer with properties:

           Name: 'fold1'
     NumOutputs: 2
    OutputNames: {'out'  'miniBatchSize'}

Создайте нейронную сеть для глубокого обучения для данных, содержащих последовательности изображений, такие как видео и медицинские данные изображения.

  • Чтобы ввести последовательности изображений в сеть, используйте входной слой последовательности.

  • Чтобы применить сверточные операции независимо к каждому временному шагу, сначала преобразуйте последовательности изображений к массиву изображений с помощью слоя сворачивания последовательности.

  • Чтобы восстановить структуру последовательности после выполнения этих операций, преобразуйте этот массив изображений назад к последовательностям изображений с помощью слоя разворачивания последовательности.

  • Чтобы преобразовать изображения в характеристические векторы, используйте сглаживать слой.

Вы можете затем последовательности входного вектора на слои LSTM и BiLSTM.

Архитектура сети Define

Создайте сеть LSTM классификации, которая классифицирует последовательности 28 28 полутоновых изображений в 10 классов.

Задайте следующую сетевую архитектуру:

  • Последовательность ввела слой с входным размером [28 28 1].

  • Свертка, нормализация партии. и слой ReLU блокируются с 20 фильтрами 5 на 5.

  • Слой LSTM с 200 скрытыми модулями, который выводит последний временной шаг только.

  • Полносвязный слой размера 10 (количество классов) сопровождаемый softmax слоем и слоем классификации.

Чтобы выполнить сверточные операции на каждом временном шаге независимо, включайте слой сворачивания последовательности перед сверточными слоями. Слои LSTM ожидают векторный вход последовательности. Чтобы восстановить структуру последовательности и изменить выход сверточных слоев к последовательностям характеристических векторов, вставьте слой разворачивания последовательности и сглаживать слой между сверточными слоями и слоем LSTM.

inputSize = [28 28 1];
filterSize = 5;
numFilters = 20;
numHiddenUnits = 200;
numClasses = 10;

layers = [ ...
    sequenceInputLayer(inputSize,'Name','input')
    
    sequenceFoldingLayer('Name','fold')
    
    convolution2dLayer(filterSize,numFilters,'Name','conv')
    batchNormalizationLayer('Name','bn')
    reluLayer('Name','relu')
    
    sequenceUnfoldingLayer('Name','unfold')
    flattenLayer('Name','flatten')
    
    lstmLayer(numHiddenUnits,'OutputMode','last','Name','lstm')
    
    fullyConnectedLayer(numClasses, 'Name','fc')
    softmaxLayer('Name','softmax')
    classificationLayer('Name','classification')];

Преобразуйте слои в график слоев и соедините miniBatchSize выход слоя сворачивания последовательности к соответствующему входу слоя разворачивания последовательности.

lgraph = layerGraph(layers);
lgraph = connectLayers(lgraph,'fold/miniBatchSize','unfold/miniBatchSize');

Просмотрите итоговую сетевую архитектуру с помощью plot функция.

figure
plot(lgraph)

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

Генерация кода графического процессора
Сгенерируйте код CUDA® для NVIDIA® графические процессоры с помощью GPU Coder™.

Введенный в R2019a