Чтобы создать пользовательский слой, который сам задает график слоев, можно объявить dlnetwork
возразите как настраиваемый параметр в properties (Learnable)
раздел определения слоя. Этот метод известен как сетевой состав. Можно использовать сетевой состав для:
Создайте один пользовательский слой, который представляет блок learnable слоев, например, остаточный блок.
Создайте сеть с потоком управления, например, сеть с разделом, который может динамически измениться в зависимости от входных данных.
Создайте сеть с циклами, например, сеть с разделами, которые подают выход назад в себя.
Для вложенных сетей, которые имеют и настраиваемые параметры и параметры состояния, например, сети с нормализацией партии. или слоями LSTM, объявляют сеть в properties (Learnable, State)
раздел определения слоя.
Для примера, показывающего, как задать пользовательский слой, содержащий 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 = 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); end
Если dlnetwork
объект не ведет себя по-другому во время обучения и предсказания, затем можно не использовать прямую функцию. В этом случае программное обеспечение использует predict
функция во время обучения.
Если слой вперед функции полностью поддерживает 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).
checkLayer
| trainNetwork
| trainingOptions
| analyzeNetwork
| dlnetwork