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 скрытыми блоками, который выводит только последний временной шаг.

  • Полностью соединенный слой размера 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.

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

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

.
Представлен в R2019a