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

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

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

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

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

Для примера, показывающего, как задать пользовательский слой, содержащий learnable dlnetwork возразите, смотрите, Задают Вложенный Слой Глубокого обучения.

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

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

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

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

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 объекты, соответственно.

Пользовательские слои с learnable 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 объект не ведет себя по-другому во время обучения и предсказания, затем можно не использовать прямую функцию. В этом случае программное обеспечение использует predict функция во время обучения.

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

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

Этот список показывает встроенные слои, которые полностью поддерживают сетевой состав.

Входные слои

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

imageInputLayer

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

image3dInputLayer

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

sequenceInputLayer

Последовательность ввела входные данные о последовательности слоя к сети.

featureInputLayer

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

Свертки и полносвязные слои

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

convolution2dLayer

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

convolution3dLayer

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

groupedConvolution2dLayer

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

transposedConv2dLayer

Транспонированный 2D слой свертки сверхдискретизировал карты функции.

transposedConv3dLayer

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

fullyConnectedLayer

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

Слои активации

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

reluLayer

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

leakyReluLayer

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

clippedReluLayer

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

eluLayer

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

swishLayer

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

tanhLayer

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

softmaxLayer

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

Нормализация, уволенный и слои обрезки

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

groupNormalizationLayer

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

layerNormalizationLayer

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

crossChannelNormalizationLayer

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

dropoutLayer

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

crop2dLayer

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

Объединение и необъединение слоев

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

averagePooling2dLayer

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

averagePooling3dLayer

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

globalAveragePooling2dLayer

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

globalAveragePooling3dLayer

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

maxPooling2dLayer

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

maxPooling3dLayer

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

globalMaxPooling2dLayer

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

globalMaxPooling3dLayer

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

maxUnpooling2dLayer

Макс. слой необъединения не объединяет выход макс. слоя объединения.

Слои комбинации

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

additionLayer

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

multiplicationLayer

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

depthConcatenationLayer

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

concatenationLayer

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

Совместимость с GPU

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

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

Смотрите также

| | | |

Похожие темы