Чтобы создать пользовательский слой, который сам задает график слоев, можно задать dlnetwork
возразите как настраиваемый параметр. Это известно как сетевой состав. Можно использовать сетевой состав для:
Создайте один пользовательский слой, который представляет блок learnable слоев. Например, остаточный блок.
Создайте сети с потоком управления. Например, где раздел сети может динамически измениться в зависимости от входных данных.
Создайте сети с циклами. Например, где разделы сети подают ее выход назад в себя.
Для примера, показывающего, как задать пользовательский слой, содержащий learnable dlnetwork
возразите, смотрите, Задают Вложенный Слой Глубокого обучения.
Для примера, показывающего, как обучить сеть с вложенными слоями, смотрите, Обучают Нейронную сеть для глубокого обучения с Вложенными слоями.
При определении dlnetwork
возразите как настраиваемый параметр, dlnetwork
объект должен иметь входной слой.
Поскольку необходимо задать входной размер входного слоя dlnetwork
объект, вы, возможно, должны задать входной размер при создании слоя. Этот пример кода показывает, как инициализировать входной размер dlnetwork
объект с помощью входного параметра функции конструктора inputSize
.
function layer = myLayer(inputSize) % Initialize layer properties. ... % Define network. layers = [ imageInputLayer(inputSize,'Normalization','none') % Other network layers go here. ]; lgraph = layerGraph(lgraph); layer.Network = dlnetwork(lgraph); end
Чтобы помочь определить входной размер к слою, можно использовать analyzeNetwork
функционируйте и проверяйте размер активаций предыдущего слоя.
Некоторые слои ведут себя по-другому во время обучения и во время предсказания. Например, слой уволенного только выполняет уволенного во время обучения и не оказывает влияния во время предсказания.
при реализации predict
и опционально forward
функции пользовательского слоя, чтобы гарантировать, что слои в dlnetwork
объект ведет себя правильным способом, использует predict
и forward
функции для dlnetwork
объекты, соответственно.
Пользовательские слои с learnable dlnetwork
объекты не поддерживают пользовательские обратные функции.
Необходимо все еще присвоить значение выходному аргументу памяти 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.
Этот список показывает встроенные слои, которые полностью поддерживают сетевой состав.
Слой | Описание |
---|---|
Изображение ввело входные параметры слоя 2D изображения к сети, и применяет нормализацию данных. | |
Входной слой 3-D изображения вводит 3-D изображения или объемы к сети и применяет нормализацию данных. | |
Последовательность ввела входные данные о последовательности слоя к сети. | |
Функция ввела входные данные о функции слоя в сеть, и применяет нормализацию данных. Используйте этот слой, когда у вас будет набор данных числовых скаляров, представляющих функции (данные без пространственных или измерений времени). |
Слой | Описание |
---|---|
2D сверточный слой применяет скользящие сверточные фильтры к входу. | |
3-D сверточный слой применяет скользящие кубовидные фильтры свертки к 3D входу. | |
2D сгруппированный сверточный слой разделяет входные каналы на группы и применяет скользящие сверточные фильтры. Используйте сгруппированные сверточные слои для отделимого мудрого каналом (также известный мудрыми глубиной отделимый) свертка. | |
Транспонированный 2D слой свертки сверхдискретизировал карты функции. | |
Транспонированный 3-D слой свертки сверхдискретизировал 3D карты функции. | |
Полносвязный слой умножает вход на матрицу веса и затем добавляет вектор смещения. |
Слой | Описание |
---|---|
Слой нормализации группы делит каналы входных данных в группы и нормирует активации через каждую группу. Чтобы ускорить обучение сверточных нейронных сетей и уменьшать чувствительность к сетевой инициализации, используйте слои нормализации группы между сверточными слоями и нелинейностью, такой как слои ReLU. Можно выполнить нормализацию экземпляра и нормализацию слоя путем определения соответствующего номера групп. | |
Мудрый каналом локальный ответ (межканальный) слой нормализации выполняет мудрую каналом нормализацию. | |
Слой уволенного случайным образом обнуляет входные элементы с данной вероятностью. | |
2D слой обрезки применяет 2D обрезку к входу. |
Слой | Описание |
---|---|
Средний слой объединения выполняет субдискретизацию путем деления входа на прямоугольные области объединения и вычисление средних значений каждой области. | |
3-D средний слой объединения выполняет субдискретизацию путем деления 3D входа на кубовидные области объединения и вычисление средних значений каждой области. | |
Глобальный средний слой объединения выполняет субдискретизацию путем вычисления среднего значения размерностей высоты и ширины входа. | |
3-D глобальный средний слой объединения выполняет субдискретизацию путем вычисления среднего значения высоты, ширины и размерностей глубины входа. | |
Макс. слой объединения выполняет субдискретизацию путем деления входа на прямоугольные области объединения и вычисления максимума каждой области. | |
3-D макс. слой объединения выполняет субдискретизацию путем деления 3D входа на кубовидные области объединения и вычисления максимума каждой области. | |
Глобальная переменная макс. объединение слоя выполняет субдискретизацию путем вычисления максимума размерностей высоты и ширины входа. | |
3-D глобальная переменная макс. объединение слоя выполняет субдискретизацию путем вычисления максимума высоты, ширины и размерностей глубины входа. | |
Макс. слой необъединения не объединяет выход макс. слоя объединения. |
Слой | Описание |
---|---|
Слой сложения добавляет входные параметры из нескольких поэлементных слоев нейронной сети. | |
Слой умножения умножает входы от нескольких поэлементных слоев нейронной сети. | |
Слой конкатенации глубины берет входные параметры, которые имеют ту же высоту и ширину, и конкатенирует их по третьему измерению (размерность канала). | |
Слой конкатенации берет входные параметры и конкатенирует их в заданном измерении. Входные параметры должны иметь тот же размер во всех размерностях кроме размерности конкатенации. |
Если слой вперед функции полностью поддерживает dlarray
объекты, затем слоем является совместимый графический процессор. В противном случае, чтобы быть совместимым графическим процессором, функции слоя должны поддержать входные параметры и возвратить выходные параметры типа gpuArray
(Parallel Computing Toolbox).
Много поддержки встроенных функций MATLAB® gpuArray
(Parallel Computing Toolbox) и dlarray
входные параметры. Для списка функций та поддержка dlarray
объекты, см. Список Функций с Поддержкой dlarray. Для списка функций, которые выполняются на графическом процессоре, смотрите функции MATLAB Запуска на графическом процессоре (Parallel Computing Toolbox). Чтобы использовать графический процессор для глубокого обучения, у вас должен также быть CUDA®, включенный NVIDIA®, графический процессор с вычисляет возможность 3.0 или выше. Для получения дополнительной информации о работе с графическими процессорами в MATLAB смотрите, что графический процессор Вычисляет в MATLAB (Parallel Computing Toolbox).
analyzeNetwork
| checkLayer
| trainingOptions
| trainNetwork