Вычисление градиентов для пользовательских циклов обучения с помощью автоматического дифференцирования
Использовать dlgradient для вычисления производных с использованием автоматического дифференцирования для пользовательских циклов обучения.
Совет
Для выполнения большинства задач глубокого обучения можно использовать предварительно подготовленную сеть и адаптировать ее к собственным данным. Пример, показывающий, как использовать transfer learning для переподготовки сверточной нейронной сети для классификации нового набора изображений, см. в разделе Train Deep Learning Network to Classify New Images. Кроме того, можно создавать и обучать сети с нуля с помощью layerGraph объекты с trainNetwork и trainingOptions функции.
Если trainingOptions функция не предоставляет возможности обучения, необходимые для выполнения задачи, после чего можно создать индивидуальный цикл обучения с помощью автоматического дифференцирования. Дополнительные сведения см. в разделе Определение сети глубокого обучения для пользовательских циклов обучения.
[ возвращает градиенты dydx1,...,dydxk] = dlgradient(y,x1,...,xk)y относительно переменных x1 через xk.
Звонить dlgradient изнутри функция, переданная dlfeval. См. раздел Расчет градиента с использованием автоматической дифференциации и Использование автоматической дифференциации в инструментарии глубокого обучения.
[ возвращает градиенты и задает дополнительные параметры, используя одну или несколько пар имя-значение. Например, dydx1,...,dydxk] = dlgradient(y,x1,...,xk,Name,Value)dydx = dlgradient(y,x,'RetainData',true) заставляет градиент сохранять промежуточные значения для повторного использования в последующих dlgradient вызовы. Этот синтаксис может сэкономить время, но использует больше памяти. Дополнительные сведения см. в разделе Советы.
dlgraident функция не поддерживает вычисление производных высшего порядка при использовании dlnetwork объекты, содержащие пользовательские слои с пользовательской функцией обратного направления.
dlgraident функция не поддерживает вычисление производных высшего порядка при использовании dlnetwork объекты, содержащие следующие слои:
gruLayer
lstmLayer
bilstmLayer
dlgradient функция не поддерживает вычисление производных высшего порядка, зависящих от следующих функций:
gru
lstm
embed
prod
interp1
A dlgradient вызов должен находиться внутри функции. Чтобы получить числовое значение градиента, необходимо вычислить функцию с помощью dlfeval, и аргумент функции должен быть dlarray. См. раздел Использование автоматической дифференциации в инструментарии глубокого обучения.
Для корректной оценки градиентов, y аргумент должен использовать только поддерживаемые функции для dlarray. См. Список функций с поддержкой dlarray.
Если установить 'RetainData' аргумент пары имя-значение для true, программное обеспечение сохраняет трассировку на время dlfeval вызов функции вместо стирания трассировки сразу после вычисления производной. Такая консервация может привести к последующему dlgradient вызов в пределах одного и того же dlfeval вызов выполняется быстрее, но использует больше памяти. Например, при обучении состязательной сети, 'RetainData' параметр полезен, поскольку эти две сети совместно используют данные и функции во время обучения. См. Генеративная состязательная сеть (GAN).
Если необходимо вычислить только дериваты первого порядка, убедитесь, что 'EnableHigherDerivatives' опция - false как это обычно быстрее и требует меньше памяти.