exponenta event banner

flattenLayer

Описание

Плоский слой сворачивает пространственные размеры входа в размер канала.

Например, если вход в слой представляет собой массив H-by-W-by-C-by-N-by-S (последовательности изображений), то плоский вывод представляет собой массив (H * W * C) -by-N-by-S.

Этот уровень поддерживает только ввод последовательности.

Создание

Описание

layer = flattenLayer создает плоский слой.

пример

layer = flattenLayer('Name',Name) устанавливает необязательный Name с использованием пары имя-значение. Например, flattenLayer('Name','flatten1') создает плоский слой с именем 'flatten1'.

Свойства

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

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

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

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

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

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

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

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

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

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

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

Функции объекта

Примеры

свернуть все

Создание плоского слоя с именем 'flatten1'.

layer = flattenLayer('Name','flatten1')
layer = 
  FlattenLayer with properties:

    Name: 'flatten1'

Создание сети глубокого обучения для данных, содержащих последовательности изображений, таких как видео и медицинские данные изображений.

  • Для ввода последовательностей изображений в сеть используется уровень ввода последовательностей.

  • Чтобы применить сверточные операции независимо к каждому временному шагу, сначала преобразуйте последовательности изображений в массив изображений, используя слой складывания последовательностей.

  • Чтобы восстановить структуру последовательности после выполнения этих операций, преобразуйте этот массив изображений обратно в последовательности изображений, используя слой развертки последовательности.

  • Чтобы преобразовать изображения в векторы элементов, используйте плоский слой.

Затем векторные последовательности можно вводить в уровни 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