exponenta event banner

sequenceUnfoldingLayer

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

Описание

Слой разворачивания последовательности восстанавливает структуру последовательности входных данных после сворачивания последовательности.

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

Создание

Описание

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

пример

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

Свойства

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

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

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

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

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

  • 'in' – Введите карту функции.

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

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

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

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

  • 'in' – Введите карту функции.

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

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

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

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

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

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

Примеры

свернуть все

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

layer = sequenceUnfoldingLayer('Name','unfold1')
layer = 
  SequenceUnfoldingLayer with properties:

          Name: 'unfold1'
     NumInputs: 2
    InputNames: {'in'  '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)

Введенный в R2019a