Вычислите градиенты для пользовательских учебных циклов с помощью автоматического дифференцирования
Использование 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,Name,Value)dydx = dlgradient(y,x,'RetainData',true) заставляет градиент сохранять промежуточные значения для повторного использования в последующем dlgradient вызовы. Этот синтаксис может сэкономить время, но использует больше памяти. Для получения дополнительной информации смотрите Советы.
dlgradient функция не поддерживает вычисление производных высшего порядка при использовании dlnetwork объекты, содержащие пользовательские слои с пользовательской обратной функцией.
dlgradient функция не поддерживает вычисление производных высшего порядка при использовании dlnetwork объекты, содержащие следующие слои:
gruLayer
lstmLayer
bilstmLayer
dlgradient функция не поддерживает вычисление производных высшего порядка, которые зависят от следующих функций:
gru
lstm
embed
prod
interp1
A dlgradient вызов должен быть в функции. Чтобы получить числовое значение градиента, необходимо оценить функциональное использование dlfeval, и аргументом к функции должен быть dlarray. Смотрите использование автоматическое дифференцирование в Deep Learning Toolbox.
Включить правильную оценку градиентов, y аргумент должен использовать только поддерживаемые функции для dlarray. См. Список Функций с Поддержкой dlarray.
Если вы устанавливаете 'RetainData' аргумент пары "имя-значение" true, трассировка консервов программного обеспечения на время dlfeval вызов функции вместо того, чтобы сразу стереть трассировку после производного расчета. Это сохранение может вызвать последующее dlgradient вызовите в том же самом dlfeval вызовите, чтобы быть выполненными быстрее, но использует больше памяти. Например, в обучении соперничающей сети, 'RetainData' установка полезна, потому что эти две сети осуществляют обмен данными и функции во время обучения. Смотрите Обучают Порождающую соперничающую сеть (GAN).
Когда необходимо вычислить производные первого порядка только, гарантировать что 'EnableHigherDerivatives' опцией является false когда это обычно быстрее и требует меньшей памяти.
Комплексные градиенты вычисляются с помощью производной Wirtinger. Градиент задан в направлении увеличения действительной части функции, чтобы дифференцироваться. Это вызвано тем, что переменная, чтобы дифференцироваться — например, потеря — должна быть действительной, даже если функция является комплексной.