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

  • 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