exponenta event banner

Структура сети глубокого обучения

Чтобы создать пользовательский слой, который сам определяет график слоев, можно указать dlnetwork объект как обучаемый параметр. Этот способ известен как сетчатая композиция. Состав сетевого графика можно использовать для:

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

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

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

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

Пример обучения сети с вложенными слоями см. в разделе Обучение сети глубокого обучения с вложенными слоями.

Автоматическая инициализация обучаемых dlnetwork Объекты для обучения

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

Чтобы воспользоваться преимуществами автоматической инициализации, необходимо указать, что функция конструктора создает неинициализированный dlnetwork объект. Создание неинициализированного dlnetwork объект, установите Initialize параметр name-value имеет значение false. Нет необходимости указывать входной слой, поэтому нет необходимости указывать входной размер слоя.

function layer = myLayer
    
    % Initialize layer properties.
    ...

    % Define network.
    layers = [
        % Network layers go here.
        ];

    layer.Network = dlnetwork(lgraph,'Initialize',false);
end

При инициализации родительской сети распознаваемые параметры любой вложенной сети dlnetwork объекты инициализируются одновременно. Размер обучаемых параметров зависит от размера входных данных пользовательского слоя. Программное обеспечение распространяет данные через вложенную сеть и автоматически инициализирует параметры в соответствии с распространяемыми размерами и свойствами инициализации уровней вложенной сети.

Если родительская сеть обучена с использованием trainNetwork функция, затем любая вложенная dlnetwork объекты инициализируются при вызове trainNetwork. Если родительская сеть является dlnetwork, то любой вложенный dlnetwork объекты инициализируются при создании родительской сети (если родительская сеть dlnetwork инициализируется при построении) или при использовании initialize функция с родительской сетью (если родительская сеть dlnetwork не инициализирован при построении).

Кроме того, вместо отсрочки инициализации вложенной сети можно создать пользовательский уровень с уже инициализированной вложенной сетью. Это означает, что вложенная сеть инициализируется перед родительской сетью Для этого необходимо вручную указать размер всех входов во вложенную сеть. Это можно сделать, используя входные слои или предоставив примеры входных данных для dlnetwork функция конструктора. Поскольку необходимо указать размеры любых входных данных для dlnetwork при создании слоя может потребоваться указать входные размеры. Для определения размера входных данных слоя можно использовать analyzeNetwork и проверьте размер активизаций предыдущих слоев.

Функции прогнозирования и пересылки

Некоторые слои ведут себя по-разному во время тренировки и во время прогнозирования. Например, уровень отсева выполняет отсев только во время обучения и не оказывает влияния во время прогнозирования. Уровень использует одну из двух функций для выполнения прямого прохода: predict или forward. Если прямой проход находится во время предсказания, то уровень использует predict функция. Если прямой проход находится во время тренировки, то уровень использует forward функция. Если для прогнозирования времени и времени обучения не требуются две различные функции, можно опустить forward функция. В этом случае слой использует predict во время обучения.

При реализации predict и forward функции пользовательского слоя, чтобы гарантировать, что слои в dlnetwork объект вести себя правильно, используйте predict и forward функции для dlnetwork соответственно.

Пользовательские слои с возможностью изучения dlnetwork объекты не поддерживают пользовательские обратные функции.

Необходимо по-прежнему назначать значение аргументу вывода памяти forward функция.

Этот пример кода показывает, как использовать predict и forward функции с dlnetwork вход.

function Z = predict(layer,X)

    % Convert input data to formatted dlarray.
    X = dlarray(X,'SSCB');

    % Predict using network.
    dlnet = layer.Network;
    Z = predict(dlnet,X);
            
    % Strip dimension labels.
    Z = stripdims(Z);
end

function [Z,memory] = forward(layer,X)

    % Convert input data to formatted dlarray.
    X = dlarray(X,'SSCB');

    % Forward pass using network.
    dlnet = layer.Network;
    Z = forward(dlnet,X);
            
    % Strip dimension labels.
    Z = stripdims(Z);

    memory = [];
end

Если dlnetwork объект не ведет себя иначе во время обучения и прогнозирования, тогда можно опустить функцию forward. В этом случае программное обеспечение использует predict выполнять функции во время обучения.

Поддерживаемые слои

Поддержка пользовательских слоев dlnetwork объекты, не требующие обновления состояния. Это означает, что dlnetwork объект не должен содержать слои, имеющие состояние, например, уровни пакетной нормализации и LSTM.

В этом списке показаны встроенные уровни, полностью поддерживающие сетевой состав.

Входные слои

СлойОписание

imageInputLayer

Уровень ввода изображения вводит 2-D изображения в сеть и применяет нормализацию данных.

image3dInputLayer

Входной слой 3-D изображения вводит 3-D изображения или объемы в сеть и применяет нормализацию данных.

sequenceInputLayer

Входной уровень последовательности вводит данные последовательности в сеть.

featureInputLayer

Входной уровень элемента вводит данные элемента в сеть и применяет нормализацию данных. Этот слой используется при наличии набора числовых скаляров, представляющих элементы (данные без пространственных или временных измерений).

Свертка и полностью соединенные слои

СлойОписание

convolution2dLayer

2-D сверточный слой применяет скользящие сверточные фильтры к входу.

convolution3dLayer

3-D сверточный слой применяет скользящие кубические сверточные фильтры к трехмерному входу.

groupedConvolution2dLayer

2-D сгруппированный сверточный слой разделяет входные каналы на группы и применяет скользящие сверточные фильтры. Используйте сгруппированные сверточные слои для разделяемых по каналам (также называемых разделяемыми по глубине) сверток.

transposedConv2dLayer

Транспонированный слой свертки 2-D увеличивает выборку карт элементов.

transposedConv3dLayer

Транспонированный 3-D сверточный слой увеличивает трехмерные карты признаков.

fullyConnectedLayer

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

Уровни активации

СлойОписание

reluLayer

Уровень ReLU выполняет пороговую операцию для каждого элемента входа, где любое значение меньше нуля устанавливается равным нулю.

leakyReluLayer

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

clippedReluLayer

Подрезанный слой ReLU выполняет пороговую операцию, при которой любое входное значение меньше нуля устанавливается равным нулю, а любое значение выше подрезанного потолка устанавливается на этот подрезанный потолок.

eluLayer

Уровень активации ЗЭС выполняет операцию идентификации на положительных входах и экспоненциальную нелинейность на отрицательных входах.

swishLayer

Слой активации swish применяет функцию swish на входах слоев.

tanhLayer

Слой активации гиперболической касательной (tanh) применяет функцию tanh на входах слоя.

softmaxLayer

Уровень softmax применяет функцию softmax к входу.

Нормализация, отсев и обрезка слоев

СлойОписание

groupNormalizationLayer

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

layerNormalizationLayer

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

crossChannelNormalizationLayer

Канальный уровень локальной (кросс-канальной) нормализации выполняет канальную нормализацию.

dropoutLayer

Уровень отсева случайным образом устанавливает входные элементы в ноль с заданной вероятностью.

crop2dLayer

Слой подрезки 2-D применяется 2-D обрезки к вводу.

Объединение в пулы и удаление из пула слоев

СлойОписание

averagePooling2dLayer

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

averagePooling3dLayer

Уровень 3-D среднего объединения выполняет понижающую дискретизацию путем разделения трехмерного ввода на области кубического объединения и вычисления средних значений каждой области.

globalAveragePooling2dLayer

Уровень глобального среднего объединения выполняет понижающую дискретизацию путем вычисления среднего значения высоты и ширины входного сигнала.

globalAveragePooling3dLayer

3-D уровень глобального среднего объединения выполняет понижающую дискретизацию путем вычисления среднего значения высоты, ширины и глубины входного сигнала.

maxPooling2dLayer

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

maxPooling3dLayer

Уровень объединения 3-D max выполняет понижающую дискретизацию путем разделения трехмерного ввода на области кубоидального объединения и вычисления максимума каждой области.

globalMaxPooling2dLayer

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

globalMaxPooling3dLayer

3-D уровень глобального максимального объединения выполняет понижающую дискретизацию путем вычисления максимума высоты, ширины и глубины входного сигнала.

maxUnpooling2dLayer

Уровень макс. расхолаживания распаковывает выходные данные уровня макс. пула.

Комбинированные слои

СлойОписание

additionLayer

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

multiplicationLayer

Уровень умножения умножает входы от нескольких нейронных сетевых уровней по элементам.

depthConcatenationLayer

Слой конкатенации глубины принимает входные данные одинаковой высоты и ширины и объединяет их вдоль третьего размера (размера канала).

concatenationLayer

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

Совместимость графического процессора

Если функции прямого уровня полностью поддерживают dlarray объекты, то слой совместим с GPU. В противном случае, чтобы быть совместимым с GPU, функции уровня должны поддерживать входы и обратные выходы типа gpuArray(Панель инструментов параллельных вычислений).

Поддержка многих встроенных функций MATLAB ® gpuArray(Панель инструментов параллельных вычислений) и dlarray входные аргументы. Список функций, поддерживающих dlarray см. Список функций с поддержкой dlarray. Список функций, выполняемых на графическом процессоре, см. в разделе Выполнение функций MATLAB на графическом процессоре (панель инструментов параллельных вычислений). Чтобы использовать графический процессор для глубокого обучения, необходимо также иметь поддерживаемое устройство графического процессора. Сведения о поддерживаемых устройствах см. в разделе Поддержка графического процессора по выпуску (Parallel Computing Toolbox). Дополнительные сведения о работе с графическими процессорами в MATLAB см. в разделе Вычисления графического процессора в MATLAB (Parallel Computing Toolbox).

См. также

| | | |

Связанные темы