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.

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

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