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.

Определение сетевой архитектуры

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

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

  • Входной слой последовательности с входом сигнала [28 28 1].

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

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

  • A полносвязного слоя размера 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)

Figure contains an axes. The axes contains an object of type graphplot.

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

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

.
Введенный в R2019a