Вычислите градиенты для пользовательских учебных циклов с помощью автоматического дифференцирования
Используйте dlgradient
вычислить производные с помощью автоматического дифференцирования в пользовательских учебных циклах.
Для большинства задач глубокого обучения можно использовать предварительно обученную сеть и адаптировать ее к собственным данным. Для примера, показывающего, как использовать передачу обучения, чтобы переобучить сверточную нейронную сеть, чтобы классифицировать новый набор изображений, смотрите, Обучают Нейронную сеть для глубокого обучения Классифицировать Новые Изображения. В качестве альтернативы можно создать и обучить нейронные сети с нуля с помощью layerGraph
объекты с trainNetwork
и trainingOptions
функции.
Если trainingOptions
функция не обеспечивает опции обучения, в которых вы нуждаетесь для своей задачи, затем можно создать пользовательский учебный цикл с помощью автоматического дифференцирования. Чтобы узнать больше, смотрите, Задают Пользовательские Учебные Циклы.
[
возвращает градиенты dydx1,...,dydxk
] = dlgradient(y
,x1,...,xk
)y
относительно переменных x1
через xk
.
Вызовите dlgradient
из функции, переданной dlfeval
. Смотрите вычисляют градиент Используя автоматическое дифференцирование и используют автоматическое дифференцирование в Deep Learning Toolbox.
[
заставляет градиент сохранять промежуточные значения для повторного использования в последующем dydx1,...,dydxk
] = dlgradient(y
,x1,...,xk
,'RetainData'
,true)dlgradient
вызовы. Этот синтаксис может сэкономить время, но использует больше памяти. Смотрите Советы.
dlgradient
не поддерживает производные высшего порядка. Другими словами, вы не можете передать выход dlgradient
вызовите в другой dlgradient
вызвать.
dlgradient
вызов должен быть в функции. Чтобы получить числовое значение градиента, необходимо выполнить функцию с помощью dlfeval
, и аргументом к функции должен быть dlarray
. Смотрите использование автоматическое дифференцирование в Deep Learning Toolbox.
Включить правильную оценку градиентов, y
аргумент должен использовать только поддерживаемые функции в dlarray
. См. Список Функций с Поддержкой dlarray.
Если вы устанавливаете 'RetainData'
аргумент пары "имя-значение" true
, трассировка консервов программного обеспечения на время dlfeval
вызов функции вместо того, чтобы сразу стереть трассировку после производного расчета. Это сохранение может вызвать последующий dlgradient
вызовите в том же dlfeval
вызовите, чтобы быть выполненными быстрее, но использует больше памяти. Например, в обучении соперничающей сети, 'RetainData'
установка полезна, потому что эти две сети осуществляют обмен данными и функции во время обучения. Смотрите Обучают Порождающую соперничающую сеть (GAN).