dlgradient
Calcular gradientes para bucles de entrenamiento personalizados usando diferenciación automática
Sintaxis
Descripción
La función dlgradient
calcula derivadas utilizando la diferenciación automática.
Sugerencia
Para la mayor parte de las tareas de deep learning, puede utilizar una red neuronal preentrenada y adaptarla a sus propios datos. Para ver un ejemplo de cómo usar la transferencia del aprendizaje para volver a entrenar una red neuronal convolucional para clasificar un nuevo conjunto de imágenes, consulte Volver a entrenar redes neuronales para clasificar nuevas imágenes. Como alternativa, puede crear y entrenar redes neuronales desde cero usando las funciones trainnet
y trainingOptions
.
Si la función trainingOptions
no proporciona las opciones de entrenamiento que necesita para la tarea, puede crear un bucle de entrenamiento personalizado mediante diferenciación automática. Para obtener más información, consulte Entrenar una red con un bucle de entrenamiento personalizado.
Si la función trainnet
no proporciona la función de pérdida que necesita para la tarea, puede especificar una función de pérdida personalizada para trainnet
como identificador de función. Para las funciones de pérdida que requieren más entradas que las predicciones y los objetivos (por ejemplo, funciones de pérdida que requieren acceso a la red neuronal o entradas adicionales), entrene el modelo usando un bucle de entrenamiento personalizado. Para obtener más información, consulte Entrenar una red con un bucle de entrenamiento personalizado.
Si Deep Learning Toolbox™ no proporciona las capas que necesita para la tarea, puede crear una capa personalizada. Para obtener más información, consulte Definir capas de deep learning personalizadas. Para los modelos que no se pueden especificar como redes de capas, puede definir el modelo como una función. Para obtener más información, consulte Train Network Using Model Function.
Para obtener más información sobre qué método de entrenamiento usar para cada tarea, consulte Train Deep Learning Model in MATLAB.
[
devuelve los gradientes de dydx1,...,dydxk
] = dlgradient(y
,x1,...,xk
)y
respecto a las variables desde x1
hasta xk
.
Llame a dlgradient
desde dentro de una función pasada a dlfeval
. Consulte Calcular gradientes usando diferenciación automática y Use Automatic Differentiation In Deep Learning Toolbox.
[
devuelve los gradientes y especifica opciones adicionales con uno o más pares nombre-valor. Por ejemplo, dydx1,...,dydxk
] = dlgradient(y
,x1,...,xk
,Name,Value
)dydx = dlgradient(y,x,'RetainData',true)
provoca que el gradiente retenga valores intermedios para reutilizarlos en llamadas a dlgradient
posteriores. Esta sintaxis puede ahorrar tiempo, pero utiliza más memoria. Para obtener más información, consulte Consejos.
Ejemplos
Argumentos de entrada
Argumentos de par nombre-valor
Argumentos de salida
Limitaciones
La función
dlgradient
no es compatible con el cálculo de derivadas de orden superior cuando se usan objetosdlnetwork
que contienen capas personalizadas con una función de retropropagación personalizada.La función
dlgradient
no es compatible con el cálculo de derivadas de orden superior cuando se usan objetosdlnetwork
que contienen las siguientes capas:gruLayer
lstmLayer
bilstmLayer
La función
dlgradient
no es compatible con el cálculo de derivadas de orden superior que dependen de las siguientes funciones:gru
lstm
embed
prod
interp1
Más acerca de
Sugerencias
Una llamada de
dlgradient
debe estar dentro de una función. Para obtener un valor numérico de un gradiente, debe evaluar la función utilizandodlfeval
y el argumento de la función debe ser un objetodlarray
. Consulte Use Automatic Differentiation In Deep Learning Toolbox.Para permitir la evaluación correcta de los gradientes, el argumento
y
debe usar solo funciones que sean compatibles con objetosdlarray
. Consulte List of Functions with dlarray Support.Si establece el argumento de par nombre-valor
'RetainData'
entrue
, el software preserva el rastreo durante la llamada a la funcióndlfeval
en lugar de borrar el rastreo inmediatamente después del cálculo de la derivada. Esta preservación puede provocar que una llamada adlgradient
posterior dentro de la misma llamada adlfeval
se ejecute con más rapidez, pero utiliza más memoria. Por ejemplo, cuando se entrena una red antagónica. el ajuste'RetainData'
resulta útil porque las dos redes comparten datos y funciones durante el entrenamiento. Consulte Entrenar redes generativas antagónicas (GAN).Cuando necesite calcular solo derivadas de primer orden, asegúrese de que la opción
'EnableHigherDerivatives'
esfalse
, ya que es normalmente más rápida y requiere menos memoria.Los gradientes complejos se calculan utilizando la derivada de Wirtinger. El gradiente está definido en la dirección de aumento de la parte real de la función que se desea diferenciar. Esto se debe a que la variable que se desea diferenciar, por ejemplo, la pérdida, debe ser real, aunque la función sea compleja.
Para acelerar las llamadas a funciones de deep learning, como funciones de modelo y funciones de pérdida de modelo, puede utilizar la función
dlaccelerate
. La función devuelve un objetoAcceleratedFunction
que optimiza, almacena en caché y reutiliza automáticamente los rastreos.
Capacidades ampliadas
Historial de versiones
Introducido en R2019b
Consulte también
dlarray
| dlfeval
| dlnetwork
| dljacobian
| dldivergence
| dllaplacian
| dlaccelerate