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.

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

Создайте классификационную сеть 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