assembleNetwork

Собрать нейронную сеть для глубокого обучения из предварительно обученных слоев

Описание

assembleNetwork создает нейронные сети для глубокого обучения из слоев без обучения.

Использовать assembleNetwork для следующих задач:

  • Преобразуйте массив слоев или график слоев в сеть, готовую к предсказанию.

  • Собирайте сети из импортированных слоев.

  • Измените веса обученной сети.

Чтобы обучить сеть с нуля, используйте trainNetwork.

пример

assembledNet = assembleNetwork(layers) собирает массив слоев или график слоев layers в нейронную сеть для глубокого обучения, готовую к использованию для предсказания.

Примеры

свернуть все

Импортируйте слои из предварительно обученной сети Keras, замените неподдерживаемые слои пользовательскими слоями и соберите слои в сеть, готовую к предсказанию.

Импорт сети Keras

Импортируйте слои из сетевой модели Keras. Сеть в 'digitsDAGnetwithnoise.h5' классифицирует изображения цифр.

filename = 'digitsDAGnetwithnoise.h5';
lgraph = importKerasLayers(filename,'ImportWeights',true);
Warning: Unable to import some Keras layers, because they are not supported by the Deep Learning Toolbox. They have been replaced by placeholder layers. To find these layers, call the function findPlaceholderLayers on the returned object.

Сеть Keras содержит некоторые слои, которые не поддерживаются Deep Learning Toolbox™. The importKerasLayers функция отображает предупреждение и заменяет неподдерживаемые слои слоями-заполнителями.

Замена слоев

Чтобы заменить слои-заполнители, сначала определите имена заменяемых слоев. Найдите заполнитель слоев используя findPlaceholderLayers и отобразить их строения Keras.

placeholderLayers = findPlaceholderLayers(lgraph);
placeholderLayers.KerasConfiguration
ans = struct with fields:
    trainable: 1
         name: 'gaussian_noise_1'
       stddev: 1.5000

ans = struct with fields:
    trainable: 1
         name: 'gaussian_noise_2'
       stddev: 0.7000

Задайте пользовательский слой Гауссова шума путем сохранения файла gaussianNoiseLayer.m в текущей папке. Затем создайте два слоя Гауссова шума с такими же строениями, как и импортированные слои Keras.

gnLayer1 = gaussianNoiseLayer(1.5,'new_gaussian_noise_1');
gnLayer2 = gaussianNoiseLayer(0.7,'new_gaussian_noise_2');

Замените слои-заполнители пользовательскими слоями с помощью replaceLayer.

lgraph = replaceLayer(lgraph,'gaussian_noise_1',gnLayer1);
lgraph = replaceLayer(lgraph,'gaussian_noise_2',gnLayer2);

Задайте имена классов

Импортированный слой классификации не содержит классов, поэтому перед сборкой сети необходимо указать их. Если вы не задаете классы, то программное обеспечение автоматически устанавливает классы на 1, 2..., N, где N количество классов.

Классификационный слой имеет имя 'ClassificationLayer_activation_1'. Установите классы равными 0, 1..., 9, а затем замените импортированный слой классификации на новый.

cLayer = lgraph.Layers(end);
cLayer.Classes = string(0:9);
lgraph = replaceLayer(lgraph,'ClassificationLayer_activation_1',cLayer);

Сборка сети

Собрать график слоев можно используя команду assembleNetwork. Функция возвращает DAGNetwork объект, который готов к использованию для предсказания.

net = assembleNetwork(lgraph)
net = 
  DAGNetwork with properties:

         Layers: [15x1 nnet.cnn.layer.Layer]
    Connections: [15x2 table]
     InputNames: {'input_1'}
    OutputNames: {'ClassificationLayer_activation_1'}

Входные параметры

свернуть все

Слои сети, заданные как Layer массив или LayerGraph объект.

Чтобы создать сеть со всеми слоями, соединенными последовательно, можно использовать Layer массив как входной параметр. В этом случае возвращенная сеть является SeriesNetwork объект.

Ориентированная сеть ациклического графика (DAG) имеет сложную структуру, в которой слои могут иметь несколько входов и выходов. Чтобы создать сеть DAG, укажите сетевую архитектуру как LayerGraph объект, а затем используйте этот график слоев в качестве входного параметра для assembleNetwork.

Список встроенных слоев см. в Списке слоев глубокого обучения.

Выходные аргументы

свернуть все

Собранная сеть готова к предсказанию, возвращается как SeriesNetwork объект или DAGNetwork объект. Возвращенная сеть зависит от layers входной параметр:

  • Если layers является Layer массив, затем assembledNet является SeriesNetwork объект.

  • Если layers является LayerGraph объект, затем assembledNet является DAGNetwork объект.

Введенный в R2018b