trainingOptions
Opciones para entrenar una red neuronal de deep learning
Descripción
devuelve opciones de entrenamiento para el optimizador especificado por options
= trainingOptions(solverName
)solverName
. Para entrenar una red neuronal, use las opciones de entrenamiento como un argumento de entrada para la función trainnet
.
devuelve opciones de entrada con opciones adicionales especificadas por uno o más argumentos nombre-valor.options
= trainingOptions(solverName
,Name=Value
)
Ejemplos
Especificar las opciones de entrenamiento
Cree un conjunto de opciones para entrenar una red mediante gradiente descendente estocástico con momento. Reduzca la tasa de aprendizaje por un factor de 0.2 cada 5 épocas. Establezca el número máximo de épocas para entrenamiento en 20 y use un minilote con 64 observaciones en cada iteración. Active la gráfica de progreso del entrenamiento.
options = trainingOptions("sgdm", ... LearnRateSchedule="piecewise", ... LearnRateDropFactor=0.2, ... LearnRateDropPeriod=5, ... MaxEpochs=20, ... MiniBatchSize=64, ... Plots="training-progress")
options = TrainingOptionsSGDM with properties: Momentum: 0.9000 InitialLearnRate: 0.0100 MaxEpochs: 20 LearnRateSchedule: 'piecewise' LearnRateDropFactor: 0.2000 LearnRateDropPeriod: 5 MiniBatchSize: 64 Shuffle: 'once' WorkerLoad: [] CheckpointFrequency: 1 CheckpointFrequencyUnit: 'epoch' SequenceLength: 'longest' PreprocessingEnvironment: 'serial' L2Regularization: 1.0000e-04 GradientThresholdMethod: 'l2norm' GradientThreshold: Inf Verbose: 1 VerboseFrequency: 50 ValidationData: [] ValidationFrequency: 50 ValidationPatience: Inf ObjectiveMetricName: 'loss' CheckpointPath: '' ExecutionEnvironment: 'auto' OutputFcn: [] Metrics: [] Plots: 'training-progress' SequencePaddingValue: 0 SequencePaddingDirection: 'right' InputDataFormats: "auto" TargetDataFormats: "auto" ResetInputNormalization: 1 BatchNormalizationStatistics: 'auto' OutputNetwork: 'auto' Acceleration: "auto"
Monitorizar el progreso del entrenamiento de deep learning
Este ejemplo muestra cómo monitorizar el proceso de entrenamiento en redes de deep learning.
Cuando entrena redes para deep learning, puede comprobar cómo progresa el entrenamiento representando varias métricas durante el proceso. Por ejemplo, puede determinar si la precisión de la red está mejorando y con qué rapidez, y si la red está empezando a sobreajustar los datos de entrenamiento.
En este ejemplo se muestra cómo monitorizar el progreso de entrenamiento para redes entrenadas usando la función trainnet
. Para redes entrenadas con un bucle de entrenamiento personalizado, utilice un objeto trainingProgressMonitor
para representar métricas durante el entrenamiento. Para obtener más información, consulte Monitor Custom Training Loop Progress.
Cuando establece la opción de entrenamiento Plots
en "training-progress"
para trainingOptions
y comienza el entrenamiento de la red, la función trainnet
crea una figura y muestra las métricas de entrenamiento en cada iteración. Cada iteración es una estimación del gradiente y una actualización de los parámetros de la red. Si se especifican los datos de validación en trainingOptions
, la figura muestra las métricas de validación cada vez que trainnet
valida la red. La figura representa la pérdida y cualquier métrica especificada por la opción nombre-valor Metrics
. De manera predeterminada, el software utiliza una escala lineal para las gráficas. Para especificar una escala logarítmica para el eje y, seleccione el botón de escala logarítmica en la barra de herramientas de los ejes.
Durante el entrenamiento, puede detenerlo y devolver el estado actual de la red haciendo clic en el botón de stop de la esquina superior derecha. Una vez que haya hecho clic en el botón de stop, el entrenamiento podría tardar un poco antes de completarse. Una vez completado, trainnet
devuelve la red entrenada.
Especifique la opción de entrenamiento OutputNetwork
como "best-validation"
para obtener valores finales que correspondan a la iteración con el mejor valor de métrica de validación, donde las opciones de entrenamiento ObjectiveMetricName
especifican la métrica optimizada. Especifique la opción de entrenamiento OutputNetwork
como "last-iteration"
para obtener métricas finalizadas que correspondan a la última iteración de entrenamiento.
A la derecha del panel, vea la información sobre el tiempo de entrenamiento y los ajustes. Para obtener más información sobre las opciones de entrenamiento, consulte Configurar parámetros y entrenar una red neuronal convolucional.
Para guardar la gráfica del progreso de entrenamiento, haga clic en Export as Image en la ventana del entrenamiento. Puede guardar la gráfica como archivo PNG, JEPG, TIFF o PDF. También puede guardar de forma individual las gráficas con la barra de herramientas de los ejes.
Representar el progreso del entrenamiento durante el mismo
Entrene una red y represente el progreso de entrenamiento durante el mismo.
Cargue los datos de entrenamiento y de prueba de los archivos MAT DigitsDataTrain.mat
y DigitsDataTest
.mat
, respectivamente. Cada conjunto de datos de entrenamiento y de prueba contiene 5000 imágenes.
load DigitsDataTrain.mat load DigitsDataTest.mat
Cree un objeto dlnetwork
.
net = dlnetwork;
Especifique las capas de la rama de clasificación y añádalas a la red.
layers = [ imageInputLayer([28 28 1]) convolution2dLayer(3,8,Padding="same") batchNormalizationLayer reluLayer maxPooling2dLayer(2,Stride=2) convolution2dLayer(3,16,Padding="same") batchNormalizationLayer reluLayer maxPooling2dLayer(2,Stride=2) convolution2dLayer(3,32,Padding="same") batchNormalizationLayer reluLayer fullyConnectedLayer(10) softmaxLayer]; net = addLayers(net,layers);
Especifique opciones para el entrenamiento de la red. Para validar la red a intervalos regulares durante el entrenamiento, especifique los datos de validación. Registre los valores métricos para la precisión en una puntuación F. Para representar el progreso del entrenamiento durante el mismo, establezca la opción de entrenamiento Plots
en "training-progress"
.
options = trainingOptions("sgdm", ... MaxEpochs=8, ... Metrics = ["accuracy","fscore"], ... ValidationData={XTest,labelsTest}, ... ValidationFrequency=30, ... Verbose=false, ... Plots="training-progress");
Entrene la red.
net = trainnet(XTrain,labelsTrain,net,"crossentropy",options);
Detener el entrenamiento antes de tiempo usando métricas
Utilice métricas para detener el entrenamiento antes de tiempo y devolver la mejor red.
Cargue los datos de entrenamiento, que contienen 5000 imágenes de dígitos. Reserve 1000 de las imágenes para la validación de la red.
[XTrain,YTrain] = digitTrain4DArrayData; idx = randperm(size(XTrain,4),1000); XValidation = XTrain(:,:,:,idx); XTrain(:,:,:,idx) = []; YValidation = YTrain(idx); YTrain(idx) = [];
Construya una red para clasificar los datos de las imágenes de los dígitos.
net = dlnetwork;
layers = [
imageInputLayer([28 28 1])
convolution2dLayer(3,8,Padding="same")
batchNormalizationLayer
reluLayer
fullyConnectedLayer(10)
softmaxLayer];
net = addLayers(net,layers);
Especifique las opciones de entrenamiento:
Usar un solver SGDM para el entrenamiento.
Monitorizar el rendimiento del entrenamiento especificando los datos de validación y la frecuencia de validación.
Hacer un seguimiento de la precisión y la recuperación durante el entrenamiento. Para devolver la red con el mejor valor de recuperación, especifique
"recall"
como métrica objetivo y establezca la red de salida como"best-validation"
.Especificar la paciencia de validación como 5 para que el entrenamiento se detenga si la recuperación no ha disminuido durante cinco iteraciones.
Visualizar la gráfica de progreso del entrenamiento de la red.
Suprimir la salida detallada.
options = trainingOptions("sgdm", ... ValidationData={XValidation,YValidation}, ... ValidationFrequency=35, ... ValidationPatience=5, ... Metrics=["accuracy","recall"], ... ObjectiveMetricName="recall", ... OutputNetwork="best-validation", ... Plots="training-progress", ... Verbose=false);
Entrene la red.
net = trainnet(XTrain,YTrain,net,"crossentropy",options);
Argumentos de entrada
solverName
— Solver para entrenar la red neuronal
"sgdm"
| "rmsprop"
| "adam"
| "lbfgs"
Solver para entrenar la red neuronal, especificado como uno de estos valores:
"sgdm"
: gradiente descendente estocástico con momento (SGDM). SGDM es un solver estocástico. Para ver más opciones de entrenamiento, consulte Opciones de solvers estocásticos. Para obtener más información, consulte Gradiente descendente estocástico con momento."rmsprop"
: propagación del valor cuadrático medio (RMSProp). RMSProp es un solver estocástico. Para ver más opciones de entrenamiento, consulte Opciones de solvers estocásticos. Para obtener más información, consulte Propagación del valor cuadrático medio."adam"
: estimación de momento adaptativo (Adam). Adam es un solver estocástico. Para ver más opciones de entrenamiento, consulte Opciones de solvers estocásticos. Para obtener más información, consulte Estimación de momento adaptativo."lbfgs"
(desde R2023b): Broyden–Fletcher–Goldfarb–Shanno de memoria limitada (L-BFGS). L-BFGS es un solver por lotes. Utilice el algoritmo L-BFGS para redes pequeñas y conjuntos de datos que se pueden procesar en un solo lote. Para ver más opciones de entrenamiento, consulte Opciones del solver L-BFGS. Para obtener más información, consulte BFGS de memoria limitada.
La función trainBERTDocumentClassifier
(Text Analytics Toolbox) solo admite los solvers "sgdm"
, "rmsprop"
y "adam"
.
Argumentos de par nombre-valor
Especifique pares de argumentos opcionales como Name1=Value1,...,NameN=ValueN
, donde Name
es el nombre del argumento y Value
es el valor correspondiente. Los argumentos de nombre-valor deben aparecer después de otros argumentos. Sin embargo, el orden de los pares no importa.
En las versiones anteriores a la R2021a, use comas para separar cada nombre y valor, y encierre Name
entre comillas.
Ejemplo: Plots="training-progress",Metrics="accuracy",Verbose=false
especifica que se deshabilite la salida detallada y muestra el progreso del entrenamiento en una gráfica que también incluye la métrica de precisión.
Plots
— Gráficas que se desea visualizar durante el entrenamiento de red neuronal
"none"
(predeterminado) | "training-progress"
Gráficas que se desea visualizar durante el entrenamiento de red neuronal, especificadas como uno de los valores siguientes:
"none"
: no visualizar gráficas durante el entrenamiento."training-progress"
: representar el progreso del entrenamiento.
El contenido de la gráfica depende del solver que se use.
Cuando el argumento
solverName
es"sgdm"
,"adam"
o"rmsprop"
, la gráfica muestra la pérdida de minilotes, la pérdida de validación, el minilote de entrenamiento y las métricas de validación especificadas por la opciónMetrics
, así como información adicional sobre el progreso del entrenamiento.Cuando el argumento
solverName
es"lbfgs"
, la gráfica muestra la pérdida de validación y entrenamiento, las métricas de validación y entrenamiento especificadas por la opciónMetrics
, así como información adicional sobre el progreso del entrenamiento.
Para abrir y cerrar de forma programática la gráfica del progreso del entrenamiento después del entrenamiento, use las funciones show
y close
con la segunda salida de la función trainnet
. Puede usar la función show
para ver el progreso del entrenamiento, incluso si la opción de entrenamiento Plots
está especificada como "none"
.
Para cambiar la escala del eje y a logarítmica, utilice la barra de herramientas de los ejes.
Metrics
— Métricas para realizar seguimiento
[]
(predeterminado) | vector de caracteres | arreglo de cadena | identificador de función | objeto deep.DifferentiableFunction
(desde R2024a) | arreglo de celdas | objeto métrico
Desde R2023b
Métricas para realizar seguimiento, especificadas como un vector de caracteres o escalar de cadena de un nombre de métrica integrada, un arreglo de cadena de nombres, un objeto métrico integrado o personalizado, un identificador de función (@myMetric
), un objeto deep.DifferentiableFunction
o un arreglo de celdas de nombres, objetos métricos e identificadores de función.
Nombre de métrica integrada: especifique las métricas como un escalar de cadena, un vector de caracteres o un arreglo de cadena de nombres de métricas integradas. Los valores admitidos son
"accuracy"
,"auc"
,"fscore"
,"precision"
,"recall"
y"rmse"
.Objeto métrico integrado: si necesita más flexibilidad, puede usar objetos métricos integrados. El software admite estos objetos métricos integrados:
Al crear un objeto métrico integrado, puede especificar opciones adicionales, como el tipo promediador y si la tarea es de una sola o de varias etiquetas.
Identificador de función métrica personalizada: si la métrica que necesita no es una métrica integrada, puede especificar métricas personalizadas mediante un identificador de función. La función debe tener la sintaxis
metric = metricFunction(Y,T)
, dondeY
corresponde a las predicciones de la red yT
corresponde a las respuestas objetivo. Para redes con varias salidas, la sintaxis debe sermetric = metricFunction(Y1,…,YN,T1,…TM)
, dondeN
es el número de salidas yM
es el número de objetivos. Para obtener más información, consulte Define Custom Metric Function.Nota
Cuando tiene datos de validación en minilotes, el software calcula la métrica de validación para cada minilote y luego devuelve el promedio de esos valores. Para algunas métricas, este comportamiento puede dar como resultado un valor de métrica diferente que si calcula la métrica usando todo el conjunto de validación a la vez. En la mayoría de los casos, los valores son similares. Para usar una métrica personalizada que no sea un promedio por lotes para los datos de validación, debe crear un objeto métrico personalizado. Para obtener más información, consulte Define Custom Deep Learning Metric Object.
Objeto métrico personalizado: si necesita mayor personalización, puede definir su propio objeto métrico personalizado. Para ver un ejemplo de cómo crear una métrica personalizada, consulte Define Custom F-Beta Score Metric Object. Para obtener información general sobre la creación de métricas personalizadas, consulte Define Custom Deep Learning Metric Object. Especifique su métrica personalizada como la opción
Metrics
de la funcióntrainingOptions
.
Esta opción solo admite las funciones trainnet
y trainBERTDocumentClassifier
(Text Analytics Toolbox).
Ejemplo: Metrics=["accuracy","fscore"]
Ejemplo: Metrics={"accuracy",@myFunction,precisionObj}
ObjectiveMetricName
— Nombre de la métrica objetivo
"loss"
(predeterminado) | escalar de cadena | vector de caracteres
Desde R2024a
Nombre de la métrica objetivo para su uso en la detención temprana y la devolución de la mejor red, especificado como escalar de cadena o vector de caracteres.
El nombre de la métrica debe ser "loss"
o coincidir con el nombre de una métrica especificada por el argumento nombre-valor Metrics
. Las métricas especificadas mediante identificadores de función no son compatibles. Para especificar el valor ObjectiveMetricName
como el nombre de una métrica personalizada, el valor de la propiedad Maximize
del objeto métrico personalizado no debe estar vacío. Para obtener más información, consulte Define Custom Deep Learning Metric Object.
Para obtener más información sobre la especificación de la métrica objetivo para la detención temprana, consulte ValidationPatience
. Para obtener más información sobre la devolución de la mejor red mediante la métrica objetivo, consulte OutputNetwork
.
Tipos de datos: char
| string
Verbose
— Indicador para mostrar información sobre el progreso del entrenamiento
1
(true
) (predeterminado) | 0
(false
)
Indicador para mostrar información sobre el progreso del entrenamiento en la ventana de comandos, especificado como 1
(true
) o 0
(false
).
El contenido de la salida detallada depende del tipo de solver.
Para los solvers estocásticos (SGDM, Adam y RMSProp), la tabla contiene estas variables:
Variable | Descripción |
---|---|
Iteration | Número de iteraciones. |
Epoch | Número de épocas. |
TimeElapsed | Tiempo transcurrido en horas, minutos y segundos. |
LearnRate | Tasa de aprendizaje. |
TrainingLoss | Pérdida de entrenamiento. |
ValidationLoss | Pérdida de validación. Si no especifica datos de validación, el software no muestra esta información. |
Para el solver L-BFGS, la tabla contiene estas variables:
Variable | Descripción |
---|---|
Iteration | Número de iteraciones. |
TimeElapsed | Tiempo transcurrido en horas, minutos y segundos. |
TrainingLoss | Pérdida de entrenamiento. |
ValidationLoss | Pérdida de validación. Si no especifica datos de validación, el software no muestra esta información. |
GradientNorm | Norma de los gradientes. |
StepNorm | Norma de los pasos. |
Si especifica métricas adicionales en las opciones de entrenamiento, también aparecerán en la salida detallada. Por ejemplo, si configura la opción de entrenamiento Metrics
como "accuracy"
, la información incluye las variables TrainingAccuracy
y ValidationAccuracy
.
Cuando el aprendizaje se detiene, la salida detallada muestra la razón de la detención.
Para especificar datos de validación, use la opción de entrenamiento ValidationData
.
Tipos de datos: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
VerboseFrequency
— Frecuencia de impresión detallada
50
(predeterminado) | entero positivo
Frecuencia de la impresión detallada, que es el número de iteraciones entre cada impresión en la ventana de comandos, especificada como un entero positivo.
Si valida la red neuronal durante el entrenamiento, el software también imprime en la ventana de comandos cada vez que tiene lugar la validación.
Para habilitar esta propiedad, establezca la opción de entrenamiento Verbose
en 1
(true
).
Tipos de datos: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
OutputFcn
— Funciones de salida
identificador de función | arreglo de celdas de identificadores de función
Funciones de salida a las que llamar durante el entrenamiento, especificadas como identificador de función o arreglo de celdas de identificadores de función. El software llama a las funciones una vez antes del inicio del entrenamiento, después de cada iteración y una vez cuando ha finalizado el entrenamiento.
Las funciones deben tener la sintaxis stopFlag = f(info)
, donde info
es una estructura que contiene información sobre el progreso del entrenamiento y stopFlag
es un escalar que indica que se debe detener el entrenamiento antes de tiempo. Si stopFlag
es 1
(true
), el software detiene el entrenamiento. En caso contrario, el software continúa el entrenamiento.
La función trainnet
pasa a la función de salida la estructura info
.
Para los solvers estocásticos (SGDM, Adam y RMSProp), info
contiene estos campos:
Campo | Descripción |
---|---|
Epoch | Número de épocas |
Iteration | Número de iteraciones |
TimeElapsed | Tiempo desde el inicio del entrenamiento |
LearnRate | Tasa de aprendizaje de iteraciones |
TrainingLoss | Pérdida de entrenamiento de iteraciones |
ValidationLoss | Pérdida de validación, si se especifica y se evalúa en la iteración. |
State | Estado de entrenamiento de iteraciones, especificado como "start" , "iteration" o "done" . |
Para el solver L-BFGS, info
contiene estos campos:
Campo | Descripción |
---|---|
Iteration | Número de iteraciones |
TimeElapsed | Tiempo transcurrido en horas, minutos y segundos |
TrainingLoss | Pérdida de entrenamiento |
ValidationLoss | Pérdida de validación. Si no especifica datos de validación, el software no muestra esta información. |
GradientNorm | Norma de los gradientes |
StepNorm | Norma de los pasos |
State | Estado de entrenamiento de iteraciones, especificado como "start" , "iteration" o "done" . |
Si especifica métricas adicionales en las opciones de entrenamiento, también aparecerán en la información de entrenamiento. Por ejemplo, si configura la opción de entrenamiento Metrics
como "accuracy"
, la información incluye los campos TrainingAccuracy
y ValidationAccuracy
.
Si un campo no se calcula o no es relevante para una determinada llamada a las funciones de salida, este contiene un arreglo vacío.
Para ver un ejemplo de cómo utilizar funciones de salida, consulte Custom Stopping Criteria for Deep Learning Training.
Tipos de datos: function_handle
| cell
InputDataFormats
— Descripción de dimensiones de datos de entrada
"auto"
(predeterminado) | arreglo de cadena | arreglo de celdas de vectores de caracteres | vector de caracteres
Desde R2023b
Descripción de las dimensiones de los datos de entrada, especificada como un arreglo de cadenas, un vector de caracteres o un arreglo de celdas de vectores de caracteres.
Si InputDataFormats
es "auto"
, el software usa los formatos esperados por la entrada de red. De lo contrario, el software usa los formatos especificados para la entrada de red correspondiente.
Un formato de datos es una cadena de caracteres, en la que cada carácter describe el tipo de la dimensión de datos correspondiente.
Los caracteres son los siguientes:
"S"
: espacial"C"
: canal"B"
: lote"T"
: tiempo"U"
: sin especificar
Por ejemplo, considere un arreglo que contiene un lote de secuencias, donde la primera, la segunda y la tercera dimensión corresponden a canales, observaciones y unidades de tiempo, respectivamente. Puede especificar que este arreglo tenga el formato "CBT"
(canal, lote, tiempo).
Puede especificar varias dimensiones etiquetadas "S"
o "U"
. Puede utilizar las etiquetas "C"
, "B"
y "T"
como mucho una vez. El software ignora las dimensiones únicas "U"
restantes tras la segunda dimensión.
Para redes neuronales con varias entradas net
, especifique un arreglo de formatos de datos de entrada, donde InputDataFormats(i)
corresponde a la entrada net.InputNames(i)
.
Para obtener más información, consulte Deep Learning Data Formats.
Tipos de datos: char
| string
| cell
TargetDataFormats
— Descripción de dimensiones de datos objetivo
"auto"
(predeterminado) | arreglo de cadena | arreglo de celdas de vectores de caracteres | vector de caracteres
Desde R2023b
Descripción de las dimensiones de los datos objetivo, especificada como uno de estos valores:
"auto"
: si los datos objetivo contienen el mismo número de dimensiones que los de entrada, la funcióntrainnet
usa el formato especificado porInputDataFormats
. Si los datos objetivo contienen un número de dimensiones distinto que los de entrada, la funcióntrainnet
usa el formato esperado por la función de pérdida.Arreglo de cadenas, vector de caracteres o arreglo de celdas de vectores de caracteres: la función
trainnet
usa los formatos de datos especificados.
Un formato de datos es una cadena de caracteres, en la que cada carácter describe el tipo de la dimensión de datos correspondiente.
Los caracteres son los siguientes:
"S"
: espacial"C"
: canal"B"
: lote"T"
: tiempo"U"
: sin especificar
Por ejemplo, considere un arreglo que contiene un lote de secuencias, donde la primera, la segunda y la tercera dimensión corresponden a canales, observaciones y unidades de tiempo, respectivamente. Puede especificar que este arreglo tenga el formato "CBT"
(canal, lote, tiempo).
Puede especificar varias dimensiones etiquetadas "S"
o "U"
. Puede utilizar las etiquetas "C"
, "B"
y "T"
como mucho una vez. El software ignora las dimensiones únicas "U"
restantes tras la segunda dimensión.
Para obtener más información, consulte Deep Learning Data Formats.
Tipos de datos: char
| string
| cell
MaxEpochs
— Número máximo de épocas
30
(predeterminado) | entero positivo
Número máximo de épocas (pasos completos de los datos) que desea usar para el entrenamiento, especificado como un entero positivo.
Esta opción solo admite solvers estocásticos (cuando el argumento solverName
es "sgdm"
, "adam"
o "rmsprop"
).
Tipos de datos: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
MiniBatchSize
— Tamaño de minilote de
128
(predeterminado) | entero positivo
Tamaño de minilote que desea usar para cada iteración de entrenamiento, especificado como un entero positivo. Un minilote es un subconjunto del conjunto de entrenamiento que se usa para evaluar el gradiente de la función de pérdida y actualizar los pesos.
Si el tamaño de minilote no divide el número de muestras de entrenamiento de manera uniforme, el software descarta los datos de entrenamiento que no caben en el minilote final completo de cada época. Si el tamaño de minilote es más pequeño que el número de muestras de entrenamiento, el software no descarta ningún dato.
Esta opción solo admite solvers estocásticos (cuando el argumento solverName
es "sgdm"
, "adam"
o "rmsprop"
).
Tipos de datos: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
Shuffle
— Opción para cambiar el orden de los datos
"once"
(predeterminado) | "never"
| "every-epoch"
Opción para cambiar el orden de los datos, especificada como uno de estos valores:
"once"
: cambiar el orden de los datos de entrenamiento y validación una vez antes del entrenamiento."never"
: no cambiar el orden de los datos."every-epoch"
: cambiar el orden de los datos de entrenamiento antes de cada época de entrenamiento y cambiar el orden de los datos de validación antes de cada validación de la red neuronal. Si el tamaño de minilote no divide el número de muestras de entrenamiento de manera uniforme, el software descarta los datos de entrenamiento que no caben en el minilote final completo de cada época. Para evitar descartar los mismos datos cada época, establezca la opción de entrenamientoShuffle
en"every-epoch"
.
Esta opción solo admite solvers estocásticos (cuando el argumento solverName
es "sgdm"
, "adam"
o "rmsprop"
).
InitialLearnRate
— Tasa de aprendizaje inicial
escalar positivo
Tasa de aprendizaje inicial usada para el entrenamiento, especificada como un escalar positivo.
Si la tasa de aprendizaje es demasiado baja, el entrenamiento puede tardar mucho tiempo. Si la tasa de aprendizaje es demasiado alta, el entrenamiento podría lograr un resultado subóptimo o divergir.
Esta opción solo admite solvers estocásticos (cuando el argumento solverName
es "sgdm"
, "adam"
o "rmsprop"
).
Cuando solverName
es "sgdm"
, el valor predeterminado es 0.01
. Cuando solverName
es "rmsprop"
o "adam"
, el valor predeterminado es 0.001
.
Tipos de datos: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
LearnRateSchedule
— Opción para reducir la tasa de aprendizaje durante el entrenamiento
"none"
(predeterminado) | "piecewise"
Opción para reducir la tasa de aprendizaje durante el entrenamiento, especificada como uno de estos valores:
"none"
: la tasa de aprendizaje se mantiene constante durante el entrenamiento."piecewise"
: la tasa de aprendizaje se actualiza periódicamente multiplicándola por un factor de reducción. Para especificar el periodo, use la opción de entrenamientoLearnRateDropPeriod
. Para especificar el factor de reducción, use la opción de entrenamientoLearnRateDropFactor
.
Esta opción solo admite solvers estocásticos (cuando el argumento solverName
es "sgdm"
, "adam"
o "rmsprop"
).
LearnRateDropPeriod
— Número de épocas para reducir la tasa de aprendizaje
10
(predeterminado) | entero positivo
Número de épocas para reducir la tasa de aprendizaje, especificado como un entero positivo. Esta opción es válida solo cuando la opción de entrenamiento LearnRateSchedule
es "piecewise"
.
El software multiplica la tasa de aprendizaje global por el factor de reducción cada vez que pasa el número de épocas especificado. Especifique el factor de reducción mediante la opción de entrenamiento LearnRateDropFactor
.
Esta opción solo admite solvers estocásticos (cuando el argumento solverName
es "sgdm"
, "adam"
o "rmsprop"
).
Tipos de datos: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
LearnRateDropFactor
— Factor para reducir la tasa de aprendizaje
0.1
(predeterminado) | escalar de 0
a 1
Factor para reducir la tasa de aprendizaje, especificado como un escalar de 0
a 1
. Esta opción es válida solo cuando la opción de entrenamiento LearnRateSchedule
es "piecewise"
.
LearnRateDropFactor
es un factor multiplicativo para aplicar a la tasa de aprendizaje cada vez que pasa un determinado número de épocas. Especifique el número de épocas mediante la opción de entrenamiento LearnRateDropPeriod
.
Esta opción solo admite solvers estocásticos (cuando el argumento solverName
es "sgdm"
, "adam"
o "rmsprop"
).
Tipos de datos: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
Momentum
— Contribución del paso previo
0.9
(predeterminado) | escalar de 0
a 1
Contribución del paso de actualización de parámetros de la iteración previa a la iteración actual del gradiente descendente estocástico con momento, especificada como un escalar de 0
a 1
.
Un valor de 0
indica que no hay contribución desde el paso previo, mientras que un valor de 1
indica una contribución máxima desde el paso previo. El valor predeterminado funciona bien para la mayoría de tareas.
Esta opción solo admite el solver SGDM (cuando el argumento solverName
es "sgdm"
).
Para obtener más información, consulte Gradiente descendente estocástico con momento.
Tipos de datos: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
GradientDecayFactor
— Tasa de decaimiento de la media móvil de gradiente
0.9
(predeterminado) | escalar no negativo menor que 1
Tasa de decaimiento de la media móvil de gradiente para el solver Adam, especificada como un escalar no negativo menor que 1
. La tasa de decaimiento del gradiente está denotada por β1
en la sección Estimación de momento adaptativo.
Esta opción solo admite el solver Adam (cuando el argumento solverName
es "adam"
).
Para obtener más información, consulte Estimación de momento adaptativo.
Tipos de datos: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
SquaredGradientDecayFactor
— Tasa de decaimiento de la media móvil de gradiente cuadrado
escalar no negativo menor que 1
Tasa de decaimiento de la media móvil de gradiente cuadrado para los solvers Adam y RMSProp, especificada como un escalar no negativo menor que 1
. La tasa de decaimiento del gradiente cuadrado está denotada por β2
en [4].
Valores típicos de la tasa de decaimiento son 0.9
, 0.99
y 0.999
, que corresponden a longitudes medias de 10
, 100
y 1000
actualizaciones de parámetros, respectivamente.
Esta opción solo admite los solvers Adam y RMSProp (cuando el argumento solverName
es "adam"
o "rmsprop"
).
El valor predeterminado es 0.999
para el solver Adam. El valor predeterminado es 0.9
para el solver RMSProp.
Para obtener más información, consulte Estimación de momento adaptativo y Propagación del valor cuadrático medio.
Tipos de datos: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
Epsilon
— Desplazamiento del denominador
1e-8
(predeterminado) | escalar positivo
Desplazamiento del denominador para los solvers Adam y RMSProp, especificada como un escalar positivo.
El solver añade el desplazamiento al denominador en las actualizaciones de parámetros de la red neuronal para evitar una división por cero. El valor predeterminado funciona bien para la mayoría de tareas.
Esta opción solo admite los solvers Adam y RMSProp (cuando el argumento solverName
es "adam"
o "rmsprop"
).
Para obtener más información, consulte Estimación de momento adaptativo y Propagación del valor cuadrático medio.
Tipos de datos: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
MaxIterations
— Número máximo de iteraciones
1000
(predeterminado) | entero positivo
Desde R2023b
Número máximo de iteraciones que desea usar para el entrenamiento, especificado como un entero positivo.
El solver L-BFGS es un solver de lote completo, lo que significa que procesa el conjunto de entrenamiento completo en una única iteración.
Esta opción solo admite el solver L-BFGS (cuando el argumento solverName
es "lbfgs"
).
Tipos de datos: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
LineSearchMethod
— Método para encontrar una tasa de aprendizaje adecuada
"weak-wolfe"
(predeterminado) | "strong-wolfe"
| "backtracking"
Desde R2023b
Método para encontrar una tasa de aprendizaje adecuada, especificado como uno de estos valores:
"weak-wolfe"
: búsqueda de una tasa de aprendizaje que satisfaga las condiciones débiles de Wolfe. Este método mantiene una aproximación definida y positiva de la matriz hessiana inversa."strong-wolfe"
: búsqueda de una tasa de aprendizaje que satisfaga las condiciones fuertes de Wolfe. Este método mantiene una aproximación definida y positiva de la matriz hessiana inversa."backtracking"
: búsqueda de una tasa de aprendizaje que satisfaga las condiciones de disminución suficientes. Este método no mantiene una aproximación definida y positiva de la matriz hessiana inversa.
Esta opción solo admite el solver L-BFGS (cuando el argumento solverName
es "lbfgs"
).
HistorySize
— Número de actualizaciones de estado que se desea almacenar
10 (predeterminado) | entero positivo
Desde R2023b
Número de actualizaciones de estado que se desea almacenar, especificado como un entero positivo. Los valores entre 3 y 20 son adecuados para la mayoría de tareas.
El algoritmo L-BFGS usa un historial de cálculos de gradientes para aproximar la matriz hessiana de forma recursiva. Para obtener más información, consulte Limited-Memory BFGS.
Esta opción solo admite el solver L-BFGS (cuando el argumento solverName
es "lbfgs"
).
Tipos de datos: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
InitialInverseHessianFactor
— Valor inicial que caracteriza la matriz hessiana inversa aproximada
1
(predeterminado) | escalar positivo
Desde R2023b
Valor inicial que caracteriza la matriz hessiana inversa aproximada, especificado como un escalar positivo.
Para ahorrar memoria, el algoritmo L-BFGS no almacena ni invierte la matriz hessiana densa B. En su lugar, el algoritmo usa la aproximación , donde m es el tamaño del historial, el factor hessiano inverso es un escalar e I es la matriz identidad. Después, el algoritmo almacena únicamente el factor hessiano inverso escalar. El algoritmo actualiza el factor hessiano inverso en cada paso.
El factor hessiano inverso inicial es el valor de .
Para obtener más información, consulte Limited-Memory BFGS.
Esta opción solo admite el solver L-BFGS (cuando el argumento solverName
es "lbfgs"
).
Tipos de datos: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
MaxNumLineSearchIterations
— Número máximo de iteraciones de búsqueda lineal
20
(predeterminado) | entero positivo
Desde R2023b
Número máximo de iteraciones de búsqueda lineal para determinar la tasa de aprendizaje, especificado como un entero positivo.
Esta opción solo admite el solver L-BFGS (cuando el argumento solverName
es "lbfgs"
).
Tipos de datos: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
GradientTolerance
— Tolerancia de gradiente relativo
1e-5
(predeterminado) | escalar positivo
Desde R2023b
Tolerancia de gradiente relativo, especificada como un escalar positivo.
El software detiene el entrenamiento cuando el gradiente relativo es menor o igual que GradientTolerance
.
Esta opción solo admite el solver L-BFGS (cuando el argumento solverName
es "lbfgs"
).
Tipos de datos: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
StepTolerance
— Tolerancia de tamaño de paso
1e-5
(predeterminado) | escalar positivo
Desde R2023b
Tolerancia de tamaño de paso, especificada como un escalar positivo.
El software detiene el entrenamiento cuando el paso que da el algoritmo es menor o igual que StepTolerance
.
Esta opción solo admite el solver L-BFGS (cuando el argumento solverName
es "lbfgs"
).
Tipos de datos: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
ValidationData
— Datos que desea usar para la validación durante el entrenamiento
[]
(predeterminado) | almacén de datos | tabla | arreglo de celdas | objeto minibatchqueue
(desde R2024a)
Datos que desea usar para la validación durante el entrenamiento, especificados como []
, un almacén de datos, una tabla, un arreglo de celdas o un objeto minibatchqueue
que contiene los predictores y los objetivos de la validación.
Durante el entrenamiento, el software usa los datos de validación para calcular la pérdida de validación y los valores métricos. Para especificar la frecuencia de validación, use la opción de entrenamiento ValidationFrequency
. También puede utilizar los datos de validación para detener el entrenamiento automáticamente cuando la métrica objetivo de la validación deje de mejorar. De forma predeterminada, la métrica objetivo se establece como la pérdida. Para activar la detención automática de la validación, use la opción de entrenamiento ValidationPatience
.
Si ValidationData
es []
, el software no valida la red neuronal durante el entrenamiento.
Si su red neuronal tiene capas que se comportan de forma diferente durante la predicción y durante el entrenamiento (por ejemplo, capas de abandono), la pérdida de validación puede ser menor que la pérdida de entrenamiento.
El software cambia los datos de validación de acuerdo con la opción de entrenamiento Shuffle
. Si Shuffle
es "every-epoch"
, el software cambia los datos de validación antes de cada validación de la red neuronal.
Los formatos admitidos dependen de la función de entrenamiento que se use.
Función trainnet
Especifique los datos de validación como un almacén de datos, el objeto minibatchqueue
o el arreglo de celdas {predictors,targets}
, donde predictors
contiene los predictores de validación y targets
contiene los objetivos de validación. Especifique los predictores y objetivos de validación usando cualquiera de los formatos compatibles con la función trainnet
.
Para obtener más información, consulte los argumentos de entrada de la función trainnet
.
Función trainBERTDocumentClassifier
(Text Analytics Toolbox)
Especifique los datos de validación como uno de estos valores:
Arreglo de celdas
{documents,targets}
, dondedocuments
contiene los documentos de entrada ytargets
contiene las etiquetas de los documentos.Tabla, donde la primera variable contiene los documentos de entrada y la segunda contiene las etiquetas de los documentos.
Para obtener más información, consulte los argumentos de entrada de la función trainBERTDocumentClassifier
(Text Analytics Toolbox).
ValidationFrequency
— Frecuencia de la validación de la red neuronal
50
(predeterminado) | entero positivo
Frecuencia de la validación de la red neuronal en número de iteraciones, especificada como un entero positivo.
El valor ValidationFrequency
es el número de iteraciones entre evaluaciones de métricas de validación. Para especificar datos de validación, use la opción de entrenamiento ValidationData
.
Tipos de datos: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
ValidationPatience
— Paciencia de la detención de la validación
Inf
(predeterminado) | entero positivo
Paciencia de la detención de la validación del entrenamiento de red neuronal, especificada como un entero positivo o Inf
.
ValidationPatience
especifica el número de veces que la métrica objetivo del conjunto de validación puede ser peor que o igual al mejor valor anterior antes de que el entrenamiento de la red neuronal se detenga. Si ValidationPatience
es Inf
, los valores de la métrica de validación no hacen que el entrenamiento se detenga antes de tiempo. El software tiene como objetivo maximizar o minimizar la métrica, según lo especificado por la propiedad Maximize
de la métrica. Cuando la métrica objetivo es "loss"
, el software tiene como objetivo minimizar el valor de pérdida.
La red neuronal devuelta depende de la opción de entrenamiento OutputNetwork
. Para devolver la red neuronal con el mejor valor de métrica de validación, establezca la opción de entrenamiento OutputNetwork
en "best-validation"
.
Antes de R2024a: El software calcula la paciencia de validación utilizando el valor de pérdida de validación.
Tipos de datos: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
OutputNetwork
— Red neuronal que se desea devolver cuando se completa el entrenamiento
"auto"
(predeterminado) | "last-iteration"
| "best-validation"
Red neuronal que se desea devolver cuando se completa el entrenamiento, especificada como una de las siguientes opciones:
"auto"
: si se especificaValidationData
, utiliza"best-validation"
. En caso contrario, utiliza"last-iteration"
."best-validation"
: devuelve la red neuronal correspondiente a la iteración de entrenamiento con el mejor valor de métrica de validación, donde la métrica para optimizar se especifica mediante la opciónObjectiveMetricName
. Para usar esta opción debe especificar la opción de entrenamientoValidationData
."last-iteration"
: devuelve la red neuronal correspondiente a la última iteración de entrenamiento.
L2Regularization
— Factor para regularización L2
0.0001
(predeterminado) | Escalar no negativo
Factor para regularización L2 (decaimiento de peso), especificado como un escalar no negativo. Para obtener más información, consulte Regularización L2.
Tipos de datos: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
ResetInputNormalization
— Opción para restablecer la normalización de la capa de entrada
1
(true
) (predeterminado) | 0
(false
)
Opción para restablecer la normalización de la capa de entrada, especificada como una de las siguientes opciones:
1
(true
): restablecer las estadísticas de normalización de la capa de entrada y recalcularlas en el momento del entrenamiento.0
(false
): calcular las estadísticas de normalización en el momento del entrenamiento cuando están vacías.
Tipos de datos: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
BatchNormalizationStatistics
— Modo para evaluar estadísticas en capas de normalización de lotes
"auto"
(predeterminado) | "population"
| "moving"
Modo para evaluar estadísticas en capas de normalización de lotes, especificado como una de las siguientes opciones:
"population"
: usar las estadísticas de población. Después del entrenamiento, el software finaliza las estadísticas pasando por los datos de entrenamiento una vez más y utiliza la media y la varianza resultantes."moving"
: aproximar las estadísticas durante el entrenamiento utilizando una estimación continua dada por pasos de actualización, donde y denotan la media y la varianza actualizadas, respectivamente, y denotan los valores de decaimiento de la media y la varianza, respectivamente, y denotan la media y la varianza de la entrada de la capa, respectivamente, y y denotan los valores más recientes de los valores de media y varianza móviles, respectivamente. Después del entrenamiento, el software usa el valor más reciente de las estadísticas de media y varianza móviles. Esta opción solo es compatible con CPU y GPU única.
"auto"
: utilizar la opción"moving"
.
GradientThreshold
— Umbral de gradiente
Inf
(predeterminado) | escalar positivo
Umbral de gradiente, especificado como Inf
o un escalar positivo. Si el gradiente supera el valor de GradientThreshold
, este se recorta de acuerdo con la opción de entrenamiento GradientThresholdMethod
.
Para obtener más información, consulte Recorte de gradiente.
Tipos de datos: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
GradientThresholdMethod
— Método de umbral de gradiente
"l2norm"
(predeterminado) | "global-l2norm"
| "absolute-value"
Método de umbral de gradiente utilizado para recortar los valores de gradiente que superan el umbral de gradiente, especificado como una de las siguientes opciones:
"l2norm"
: si la norma L2 del gradiente de un parámetro que se puede aprender es mayor queGradientThreshold
, escalar el gradiente para que la norma L2 sea igual aGradientThreshold
."global-l2norm"
: si la norma L2 global, L, es mayor queGradientThreshold
, escalar todos los gradientes por un factor deGradientThreshold/
L. La norma L2 global considera todos los parámetros que se pueden aprender."absolute-value"
: si el valor absoluto de una derivada parcial individual en el gradiente de un parámetro que se puede aprender es mayor queGradientThreshold
, escala la derivada parcial para tener una magnitud igual aGradientThreshold
y mantenga el signo de la derivada parcial.
Para obtener más información, consulte Recorte de gradiente.
SequenceLength
— Opción para rellenar o truncar secuencias
"longest"
(predeterminado) | "shortest"
Opción para rellenar, truncar o dividir secuencias de entrada, especificada como uno de estos valores:
"longest"
: rellenar secuencias en cada minilote para tener la misma longitud que la secuencia más larga. Esta opción no descarta ningún dato, aunque el relleno puede introducir ruido a la red neuronal."shortest"
: truncar secuencias en cada minilote para tener la misma longitud que la secuencia más corta. Esta opción garantiza que no se añade relleno, a costa de descartar datos.
Para obtener más información sobre el efecto del relleno y el truncado de las secuencias, consulte Relleno y truncado de secuencias.
Tipos de datos: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| char
| string
SequencePaddingDirection
— Dirección de relleno o truncado
"right"
(predeterminado) | "left"
Dirección de relleno o truncado, especificada como una de las siguientes opciones:
"right"
: rellenar o truncar secuencias a la derecha. Las secuencias comienzan en la misma unidad de tiempo y el software trunca o añade relleno al final de las secuencias."left"
: rellenar o truncar secuencias a la izquierda. El software trunca o añade relleno al principio de las secuencias para que dichas secuencias finalicen en la misma unidad de tiempo.
Dado que las capas recurrentes procesan los datos secuenciales en una unidad de tiempo cada vez, cuando la propiedad OutputMode
de la capa recurrente es "last"
, cualquier relleno en las unidades de tiempo finales puede influir negativamente en la salida de la capa. Para rellenar o truncar datos secuenciales a la izquierda, establezca la opción SequencePaddingDirection
en "left"
.
Para redes neuronales secuencia a secuencia (cuando la propiedad OutputMode
es "sequence"
para cada capa recurrente), cualquier relleno en las primeras unidades de tiempo puede influir negativamente en las predicciones para unidades de tiempo anteriores. Para rellenar o truncar datos secuenciales a la derecha, establezca la opción SequencePaddingDirection
en "right"
.
Para obtener más información sobre el efecto del relleno y el truncado de las secuencias, consulte Relleno y truncado de secuencias.
SequencePaddingValue
— Valor para rellenar secuencias
0
(predeterminado) | escalar
Valor con el que rellenar secuencias de entrada, especificado como un escalar.
No rellene secuencias con NaN
, porque haciéndolo se pueden propagar errores por la red neuronal.
Tipos de datos: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
ExecutionEnvironment
— Recurso de hardware para entrenar red neuronal
"auto"
(predeterminado) | "cpu"
| "gpu"
| "multi-gpu"
| "parallel-auto"
| "parallel-cpu"
| "parallel-gpu"
Recurso de hardware para entrenar la red neuronal, especificado como uno de estos valores:
"auto"
: usar una GPU local si hay alguna disponible. Si no, usar la CPU local."cpu"
: usar la CPU local."gpu"
: usar la GPU local."multi-gpu"
: usar varias GPU en una máquina, usando un grupo paralelo local basado en su perfil de cluster predeterminado. Si no hay grupo paralelo actual, el software inicia un grupo paralelo con un tamaño de grupo idéntico al número de GPU disponibles."parallel-auto"
: usar un grupo paralelo local o remoto. Si no hay grupo paralelo actual, el software inicia uno mediante el perfil de cluster predeterminado. Si el grupo tiene acceso a varias GPU, solo los workers con una GPU única realizan el cálculo de entrenamiento y los workers sobrantes pasan a estar inactivos. Si el grupo no tiene varias GPU, en su lugar el entrenamiento se realiza en todos los workers de las CPU disponibles. (desde R2024a)Antes de R2024a: En su lugar, use
"parallel"
."parallel-cpu"
: usar los recursos de la CPU en un grupo paralelo local o remoto, ignorando las GPU. Si no hay grupo paralelo actual, el software inicia uno mediante el perfil de cluster predeterminado. (desde R2023b)"parallel-gpu"
: usar las GPU en un grupo paralelo local o remoto. Los workers sobrantes pasan a estar inactivos. Si no hay grupo paralelo actual, el software inicia uno mediante el perfil de cluster predeterminado. (desde R2023b)
Las opciones "gpu"
, "multi-gpu"
, , "parallel-auto"
, "parallel-cpu"
y "parallel-gpu"
requieren Parallel Computing Toolbox™. Para utilizar una GPU para deep learning, debe también disponer de un dispositivo GPU compatible. Para obtener información sobre los dispositivos compatibles, consulte GPU Computing Requirements (Parallel Computing Toolbox). Si elige una de estas opciones y Parallel Computing Toolbox o una GPU adecuada no está disponible, el software devuelve un error.
Para obtener más información sobre cuándo utilizar los diferentes entornos de ejecución, consulte Scale Up Deep Learning in Parallel, on GPUs, and in the Cloud.
Para ver una mejora en el rendimiento durante el entrenamiento en paralelo, intente escalar las opciones de entrenamiento MiniBatchSize
e InitialLearnRate
en función del número de las GPU.
Las opciones "multi-gpu"
, , "parallel-auto"
, "parallel-cpu"
y "parallel-gpu"
solo admiten solvers estocásticos (cuando el argumento solverName
es "sgdm"
, "adam"
o "rmsprop"
).
PreprocessingEnvironment
— Entorno para buscar y preprocesar datos
"serial"
(predeterminado) | "background"
| "parallel"
Desde R2024a
Entorno para buscar y preprocesar datos de un almacén de datos durante el entrenamiento, especificado como uno de estos valores:
"serial"
: buscar y preprocesar datos en serie."background"
: buscar y preprocesar datos usando el grupo de fondo."parallel"
: buscar y preprocesar datos usando workers paralelos. El software abre un grupo paralelo local usando el perfil predeterminado, si no hay ningún grupo local abierto actualmente. Los grupos paralelos no locales no son compatibles. Para usar esta opción se necesita Parallel Computing Toolbox. Esta opción no es compatible cuando se entrena en paralelo (cuando la opciónExecutionEnvironment
es"parallel-auto"
,"parallel-cpu"
,"parallel-gpu"
o"multi-gpu"
).
Para usar las opciones "background"
o "parallel"
, el almacén de datos de entrada debe ser subconfigurable o divisible en particiones. Los almacenes de datos personalizados deben implementar la clase matlab.io.datastore.Subsettable
.
Las opciones "background"
y "parallel"
no son compatibles cuando la opción Shuffle
es "never"
.
Utilice las opciones "background"
o "parallel"
cuando sus minilotes necesiten un preprocesamiento sustancial. Para obtener más información sobre el entorno de preprocesamiento, consulte Use Datastore for Parallel Training and Background Preprocessing.
Esta opción solo admite solvers estocásticos (cuando el argumento solverName
es "sgdm"
, "adam"
o "rmsprop"
).
Antes de R2024a: Para preprocesar datos en paralelo, establezca la opción de entrenamiento DispatchInBackground
en 1
(true
).
Acceleration
— Optimización de rendimiento
"auto"
(predeterminado) | "none"
Desde R2024a
Optimización del rendimiento, especificada como uno de estos valores:
"auto"
: aplica automáticamente un número de optimizaciones adecuado para la red de entrada y los recursos de hardware."none"
: deshabilita todas las optimizaciones.
CheckpointPath
— Ruta para guardar las redes neuronales de puntos de control
""
(predeterminado) | escalar de cadena | vector de caracteres
Ruta para guardar las redes neuronales de puntos de control, especificada como un escalar de cadena o vector de caracteres.
Si no especifica una ruta (es decir, si usa la opción predeterminada
""
), el software no guarda ninguna red neuronal de puntos de control.Si especifica una ruta, el software guarda las redes neuronales de puntos de control en esta ruta y asigna un nombre único a cada red neuronal. Después, puede cargar cualquier red neuronal de puntos de control y retomar el entrenamiento desde esa red neuronal.
Si la carpeta no existe, deberá crearla antes de especificar la ruta para guardar las redes neuronales de puntos de control. Si la ruta que especifica no existe, el software devuelve un error.
Tipos de datos: char
| string
CheckpointFrequency
— Frecuencia con la que se guardan redes neuronales de puntos de control
entero positivo
Frecuencia con la que se guardan redes neuronales de puntos de control, especificada como un entero positivo.
Si solverName
es "lbfgs"
o CheckpointFrequencyUnit
es "iteration"
, el software guarda las redes neuronales de puntos de control cada CheckpointFrequency
iteraciones. De lo contrario, el software guarda las redes neuronales de puntos de control cada CheckpointFrequency
épocas.
Cuando solverName
es "sgdm"
, "adam"
o "rmsprop"
, el valor predeterminado es 1
. Cuando solverName
es "lbfgs"
, el valor predeterminado es 30
.
Esta opción tiene efecto cuando CheckpointPath
no está vacío.
Tipos de datos: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
CheckpointFrequencyUnit
— Unidad de frecuencia de punto de control
"epoch"
(predeterminado) | "iteration"
Unidad de frecuencia de punto de control, especificada como "epoch"
o "iteration"
.
Si CheckpointFrequencyUnit
es "epoch"
, el software guarda las redes neuronales de puntos de control cada CheckpointFrequency
épocas.
Si CheckpointFrequencyUnit
es "iteration"
, el software guarda las redes neuronales de puntos de control cada CheckpointFrequency
iteraciones.
Esta opción tiene efecto cuando CheckpointPath
no está vacío.
Esta opción solo admite solvers estocásticos (cuando el argumento solverName
es "sgdm"
, "adam"
o "rmsprop"
).
Argumentos de salida
options
— Opciones de entrenamiento
TrainingOptionsSGDM
| TrainingOptionsRMSProp
| TrainingOptionsADAM
| TrainingOptionsLBFGS
Opciones de entrenamiento, devueltas como un objeto TrainingOptionsSGDM
, TrainingOptionsRMSProp
, TrainingOptionsADAM
o TrainingOptionsLBFGS
. Para entrenar una red neuronal, use las opciones de entrenamiento como un argumento de entrada para la función trainnet
.
Si solverName
es "sgdm"
, "rmsprop"
, "adam"
o "lbfgs"
, las opciones de entrenamiento se devuelven como un objeto TrainingOptionsSGDM
, TrainingOptionsRMSProp
, TrainingOptionsADAM
o TrainingOptionsLBFGS
, respectivamente.
Sugerencias
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 Retrain Neural Network to Classify New Images. Como alternativa, puede crear y entrenar redes neuronales desde cero usando las funciones
trainnet
ytrainingOptions
.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 paratrainnet
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.
Algoritmos
Pesos y sesgos iniciales
Para capas convolucionales y totalmente conectadas, la inicialización para los pesos y los sesgos se indica mediante las propiedades WeightsInitializer
y BiasInitializer
de las capas, respectivamente. Para ver ejemplos de cómo cambiar la inicialización para los pesos y los sesgos, consulte Specify Initial Weights and Biases in Convolutional Layer y Especificar pesos y sesgos iniciales en una capa totalmente conectada.
Gradiente descendente estocástico
El algoritmo de gradiente descendente estándar actualiza los parámetros de red (pesos y sesgos) para minimizar la función de pérdida realizando pequeños pasos en cada iteración en la dirección del gradiente negativo de la pérdida,
donde es el número de iteración, es la tasa de aprendizaje, es el vector de parámetros y es la función de pérdida. En el algoritmo de gradiente descendente estándar, el gradiente de la función de pérdida, , se evalúa utilizando todo el conjunto de entrenamiento y el algoritmo de gradiente descendente estándar usa todo el conjunto de datos al mismo tiempo.
En cambio, en cada iteración el algoritmo de gradiente descendente estocástico evalúa el gradiente y actualiza los parámetros mediante un subconjunto de los datos de entrenamiento. En cada iteración se usa un subconjunto diferente, llamado minilote. La pasada completa del algoritmo de entrenamiento por todo el conjunto de entrenamiento usando minilotes es una época. El gradiente descendente estocástico es estocástico porque las actualizaciones de parámetros calculadas usando un minilote son una estimación con ruido de la actualización de parámetros que resultaría de usar el conjunto de datos completo.
Gradiente descendente estocástico con momento
El algoritmo de gradiente descendente estocástico puede oscilar por la ruta del descenso más pronunciado hacia el valor óptimo. Añadir un término de momento a la actualización de parámetros es una forma de reducir esta oscilación [2]. La actualización de gradiente descendente estocástico con momento (SGDM) es
donde la tasa de aprendizaje α y el valor del momento determinan la contribución del paso de gradiente previo a la iteración actual.
Propagación del valor cuadrático medio
El gradiente descendente estocástico con momento usa una única tasa de aprendizaje para todos los parámetros. Otros algoritmos de optimización buscan mejorar el entrenamiento de red usando tasas de aprendizaje que difieren según el parámetro y pueden adaptarse automáticamente a la función de pérdida que se optimiza. La propagación del valor cuadrático medio (RMSProp) es uno de estos algoritmos. Mantiene una media móvil de los cuadrados a nivel de elemento de los gradientes de parámetros,
β2 es el factor de decaimiento de gradiente cuadrado de la media móvil. Los valores comunes de la tasa de decaimiento son 0,9, 0,99 y 0,999. Las correspondientes longitudes medias de los gradientes cuadrados son iguales a 1/(1-β2), es decir, 10, 100 y 1000 actualizaciones de parámetros, respectivamente. El algoritmo RMSProp utiliza esta media móvil para normalizar las actualizaciones de cada parámetro individualmente,
donde la división se realiza a nivel de elemento. Utilizando RMSProp se reducen de forma efectiva las tasas de aprendizaje de los parámetros con gradientes grandes y se incrementan las tasas de aprendizaje de los parámetros con gradientes pequeños. ɛ es una constante pequeña añadida para evitar la división entre cero.
Estimación de momento adaptativo
La estimación de momento adaptativo (Adam) [4] usa una actualización de parámetros que es similar a RMSProp, pero con un término de momento añadido. Mantiene una media móvil a nivel de elemento tanto de los gradientes de parámetros como de sus valores cuadrados,
Las tasas de decaimiento β1 y β2 son los factores de decaimiento de gradiente y de decaimiento de gradiente cuadrado, respectivamente. Adam usa las medias móviles para actualizar los parámetros de red como
El valor α es la tasa de aprendizaje. Si los gradientes a lo largo de varias iteraciones son similares, usar una media móvil del gradiente permite a las actualizaciones de parámetros coger impulso en una determinada dirección. Si los gradientes contienen principalmente ruido, la media móvil del gradiente se reduce, por lo que las actualizaciones de parámetros también se reducen. La actualización Adam completa incluye también un mecanismo para corregir un sesgo que aparece al principio del entrenamiento. Para obtener más información, consulte [4].
BFGS de memoria limitada
El algoritmo L-BFGS [5] es un método quasi-Newton que aproxima el algoritmo Broyden-Fletcher-Goldfarb-Shanno (BFGS). Utilice el algoritmo L-BFGS para redes pequeñas y conjuntos de datos que se pueden procesar en un solo lote.
El algoritmo actualiza los parámetros que se pueden aprender W en la iteración k+1 usando el paso de actualización dado por
donde Wk denota los pesos en la iteración k, es la tasa de aprendizaje en la iteración k, Bk es una aproximación de la matriz hessiana en la iteración k y denota los gradientes de la pérdida con respecto a los parámetros que se pueden aprender en la iteración k.
El algoritmo L-BFGS calcula directamente el producto matriz-vector . El algoritmo no requiere calcular la inversa de Bk.
Para ahorrar memoria, el algoritmo L-BFGS no almacena ni invierte la matriz hessiana densa B. En su lugar, el algoritmo usa la aproximación , donde m es el tamaño del historial, el factor hessiano inverso es un escalar e I es la matriz identidad. Después, el algoritmo almacena únicamente el factor hessiano inverso escalar. El algoritmo actualiza el factor hessiano inverso en cada paso.
Para calcular el producto matriz-vector directamente, el algoritmo L-BFGS usa este algoritmo recursivo:
Se establece , donde m es el tamaño del historial.
Para :
Sea , donde y son las diferencias de paso y gradiente para la iteración , respectivamente.
Establezca , donde se deriva de , y los gradientes de la pérdida con respecto a la función de pérdida. Para obtener más información, consulte [5].
Se devuelve .
Recorte de gradiente
Si los gradientes aumentan de magnitud exponencialmente, el entrenamiento es inestable y puede divergir en unas pocas iteraciones. Esta "explosión de gradiente" se indica por medio de una pérdida de entrenamiento que va a NaN
o Inf
. El recorte de gradiente ayuda a evitar la explosión de gradiente estabilizando el entrenamiento en tasas de aprendizaje mayores y en presencia de valores atípicos [3]. El recorte de gradiente permite entrenar las redes más rápidamente y normalmente no afecta a la precisión de la tarea aprendida.
Hay dos tipos de recorte de gradiente.
El recorte de gradiente basado en normas vuelve a escalar el gradiente en base a un umbral y no cambia la dirección del gradiente. Los valores
"l2norm"
y"global-l2norm"
deGradientThresholdMethod
son métodos de recorte de gradiente basados en normas.El recorte de gradiente basado en valores acorta cualquier derivada parcial mayor que el umbral, lo que puede provocar que el gradiente cambie de dirección arbitrariamente. El recorte de gradiente basado en valores puede tener un comportamiento impredecible, pero los cambios suficientemente pequeños no hacen que la red diverja. El valor
"absolute-value"
deGradientThresholdMethod
es un método de recorte de gradiente basado en valores.
Regularización L2
Añadir un término de regularización para los pesos a la función de pérdida es una forma de reducir el sobreajuste [1], [2]. El término de regularización también se llama decaimiento de peso. La función de pérdida con el término de regularización toma la forma
donde es el vector de peso, es el factor de regularización (coeficiente) y la función de regularización es
Tenga en cuenta que los sesgos no están regularizados [2]. Puede especificar el factor de regularización mediante la opción de entrenamiento L2Regularization
. También puede especificar factores de regularización diferentes para distintas capas y parámetros.
La función de pérdida que el software utiliza para el entrenamiento de red incluye el término de regularización. No obstante, el valor de pérdida mostrado en la ventana de comandos y la gráfica de progreso del entrenamiento durante el entrenamiento es solo la pérdida en los datos y no incluye el término de regularización.
Referencias
[1] Bishop, C. M. Pattern Recognition and Machine Learning. Springer, New York, NY, 2006.
[2] Murphy, K. P. Machine Learning: A Probabilistic Perspective. The MIT Press, Cambridge, Massachusetts, 2012.
[3] Pascanu, R., T. Mikolov, and Y. Bengio. "On the difficulty of training recurrent neural networks". Proceedings of the 30th International Conference on Machine Learning. Vol. 28(3), 2013, pp. 1310–1318.
[4] Kingma, Diederik, and Jimmy Ba. "Adam: A method for stochastic optimization." arXiv preprint arXiv:1412.6980 (2014).
[5] Liu, Dong C., and Jorge Nocedal. "On the limited memory BFGS method for large scale optimization." Mathematical programming 45, no. 1 (August 1989): 503-528. https://doi.org/10.1007/BF01589116.
Historial de versiones
Introducido en R2016aR2024a: Especificar los datos de validación con un objeto minibatchqueue
Especifique los datos de validación como un objeto minibatchqueue
mediante el argumento ValidationData
.
R2024a: Optimización automática del rendimiento
Acelere el entrenamiento con la optimización automática del rendimiento. Cuando entrena una red mediante la función trainnet
, la optimización automática del rendimiento se habilita de forma predeterminada. Puede deshabilitar la optimización del rendimiento estableciendo la opción Acceleration
en "none"
mediante la función trainingOptions
.
R2024a: No se recomienda establecer SequenceLength
como un número entero
No se recomienda establecer SequenceLength
como un número entero; en su lugar, establezca SequenceLength
como "longest"
o "shortest"
.
Para los flujos de trabajo trainNetwork
(no recomendado), puede establecer SequenceLength
como un número entero. Si SequenceLength
es un número entero, para cada minilote, el software rellena las secuencias hasta la longitud de la secuencia más larga del minilote y, después, divide las secuencias en secuencias más pequeñas de la longitud especificada. Si se produce la división, el software crea minilotes adicionales y actualiza el estado recurrente de la red entre estos minilotes. Si la longitud de secuencia especificada no divide uniformemente las longitudes de secuencia de los datos, entonces los minilotes que contienen las unidades de tiempo finales de las secuencias tienen una longitud más corta que la longitud de secuencia especificada.
R2024a: La opción de entrenamiento DispatchInBackground
no está recomendada
La opción de entrenamiento DispatchInBackground
no está recomendada. Utilice la opción PreprocessingEnvironment
en su lugar.
La opción PreprocessingEnvironment
proporciona la misma funcionalidad y también le permite usar backgroundPool
para el preprocesamiento cuando establece PreprocessingEnvironment
como "background"
.
Esta tabla muestra cómo actualizar el código:
No recomendado | Recomendado |
---|---|
trainingOptions(solverName,DispatchInBackground=false) (valor predeterminado) | trainingOptions(solverName,PreprocessingEnvironment="serial") (valor predeterminado) |
trainingOptions(solverName,DispatchInBackground=true) | trainingOptions(solverName,PreprocessingEnvironment="parallel") |
No está previsto eliminar la opción DispatchInBackground
.
R2024a: El valor predeterminado de OutputNetwork
es "auto"
A partir de la versión R2024a, el valor predeterminado de la opción de entrenamiento OutputNetwork
es "auto"
. Si ha especificado datos de validación, el software devuelve la red correspondiente al mejor valor de métrica de validación. Si no ha especificado datos de validación, el software devuelve la red correspondiente a la última iteración de entrenamiento. Si tiene datos de validación y desea replicar el valor predeterminado anterior, establezca OutputNetwork
como "last-iteration"
.
Este cambio se aplica cuando se utilizan las opciones de entrenamiento únicamente con trainnet
. Si está utilizando las opciones de entrenamiento con la función trainNetwork
, entonces no hay ningún cambio en el comportamiento y, de forma predeterminada, el software devuelve la red correspondiente a la última iteración de entrenamiento.
R2024a: El valor "best-validation-loss"
de OutputNetwork
no está recomendado
No se recomienda especificar OutputNetwork
como "best-validation-loss"
. Si tiene un código que establece OutputNetwork
como "best-validation-loss"
, utilice "best-validation"
en su lugar. El software devuelve la red correspondiente al mejor valor de métrica de validación según lo especificado por la opción ObjectiveMetricName
. De forma predeterminada, el valor ObjectiveMetricName
se establece como "loss"
. Este comportamiento se aplica cuando se utilizan las opciones de entrenamiento únicamente con la función trainnet
.
Cuando utiliza las opciones de entrenamiento con la función trainNetwork
, si especifica OutputNetwork
como "best-validation"
, el software siempre devuelve la red con el mejor valor de pérdida de validación.
R2024a: El valor "parallel"
de ExecutionEnvironment
no está recomendado
A partir de la versión R2024a, no se recomienda especificar la opción ExecutionEnvironment
como "parallel"
. En su lugar, use "parallel-auto"
.
"parallel-auto"
tiene estas ventajas respecto a "parallel"
:
El nombre de la opción describe con mayor precisión el entorno de ejecución, ya que el software se entrena en paralelo de forma automática utilizando cualquier hardware disponible.
El nombre de la opción es coherente con el equivalente en serie
"auto"
.
No está previsto eliminar la opción "parallel"
. "parallel-auto"
solo admite la función trainnet
. Si está utilizando las opciones de entrenamiento con la función trainNetwork
, continúe usando "parallel"
.
R2024a: La opción de entrenamiento WorkerLoad
no está recomendada
A partir de la versión R2024a, no se recomienda especificar la opción de entrenamiento WorkerLoad
. Utilice spmd
(Parallel Computing Toolbox) o la variable de entorno CUDA_VISIBLE_DEVICES
en su lugar.
No está previsto eliminar el soporte para las redes de entrenamiento WorkerLoad
que utilizan la función trainNetwork
. WorkerLoad
no es compatible con las redes de entrenamiento que utilizan la función trainnet
.
Esta tabla muestra algunos usos habituales de WorkerLoad
y cómo actualizar el código para usar spmd
o la variable de entorno CUDA_VISIBLE_DEVICES
en su lugar.
No recomendado | Recomendado |
---|---|
options = trainingOptions(solver, ... ExecutionEnvironment="multi-gpu", ... WorkerLoad=[1 1 0 1]); | % Alternative 1 pool = parpool(3); spmd if spmdIndex == 3 gpuDevice(spmdIndex + 1); else gpuDevice(spmdIndex); end end options = trainingOptions(solver, ... ExecutionEnvironment="multi-gpu"); % Alternative 2 % Set this environment variable immediately after your start MATLAB. setenv("CUDA_VISIBLE_DEVICES","0,1,3"); options = trainingOptions(solver, ... ExecutionEnvironment="multi-gpu"); |
options = trainingOptions(solver, ... ExecutionEnvironment="parallel", ... WorkerLoad=[1 1 0 1]); | pool = parpool(3); spmd if spmdIndex == 3 gpuDevice(spmdIndex + 1); else gpuDevice(spmdIndex); end end options = trainingOptions(solver, ... ExecutionEnvironment="parallel-auto"); |
Si anteriormente usaba la opción WorkerLoad
para reservar un worker para preprocesar sus datos, considere también preprocesar sus datos en segundo plano especificando la opción PreprocessingEnvironment
como "background"
.
R2023b: Entrenar una red neuronal usando el solver L-BFGS
Entrene una red neuronal usando el solver L-BFGS especificando solverName
como "lbfgs"
. Utilice el algoritmo L-BFGS para redes pequeñas y conjuntos de datos que se pueden procesar en un solo lote. Para personalizar el solver L-BFGS, use las propiedades Opciones del solver L-BFGS.
Esta opción solo admite la función trainnet
.
R2023b: Especificar los formatos de los datos de entrada y objetivo
Especifique los formatos de los datos de entrada y objetivo usando las opciones InputDataFormats
y TargetDataFormats
, respectivamente.
Esta opción solo admite la función trainnet
.
R2023b: Entrenar una red neuronal en paralelo usando solo recursos de CPU o GPU
Entrene una red neuronal en paralelo usando recursos de hardware específicos indicando ExecutionEnvironment
como "parallel-cpu"
o "parallel-gpu"
.
Esta opción solo admite la función trainnet
.
R2023b: El valor predeterminado de BatchNormalizationStatistics
es "auto"
A partir de la versión R2023b, el valor predeterminado de la opción de entrenamiento BatchNormalizationStatistics
es "auto"
.
Este cambio no afecta al comportamiento de la función. Si tiene código que comprueba la propiedad BatchNormalizationStatistics
, actualícelo para tener en cuenta la opción "auto"
.
R2022b: trainNetwork
rellena minilotes hasta la longitud de la secuencia más larga antes de dividirla cuando se especifica la opción de entrenamiento SequenceLength
como un número entero
A partir de la versión R2022b, cuando se entrena una red neuronal con datos secuenciales utilizando la función trainNetwork
y la opción SequenceLength
es un número entero, el software rellena las secuencias hasta la longitud de la secuencia más larga en cada minilote y, luego, divide las secuencias en minilotes con la longitud de secuencia especificada. Si SequenceLength
no divide uniformemente la longitud de la secuencia del minilote, entonces el último minilote dividido tiene una longitud más corta que SequenceLength
. Este comportamiento evita el entrenamiento de la red neuronal en unidades de tiempo que contengan solo valores de relleno.
En versiones anteriores, el software rellena los minilotes de secuencias para que tengan una longitud que coincida con el múltiplo más cercano de SequenceLength
que sea mayor o igual a la longitud del minilote y, luego, divide los datos. Para reproducir este comportamiento, utilice un ciclo de entrenamiento personalizado e implemente este comportamiento al preprocesar minilotes de datos.
R2018b: El valor predeterminado de la opción de entrenamiento ValidationPatience
es Inf
A partir de la versión R2018b, el valor predeterminado de la opción de entrenamiento ValidationPatience
es Inf
, lo que significa que la detención automática mediante validación está desactivada. Este comportamiento evita que el entrenamiento se detenga antes de haber obtenido un aprendizaje suficiente de los datos.
En versiones anteriores, el valor predeterminado es 5
. Para reproducir este comportamiento, establezca la opción ValidationPatience
en 5
.
R2018b: Diferente nombre de archivo para redes de puntos de control
A partir de la versión R2018b, al guardar redes de puntos de control, el software asigna nombres de archivo que empiezan por net_checkpoint_
. En versiones anteriores, el software asigna nombres de archivo que empiezan por convnet_checkpoint_
.
Si tiene código que guarda y carga redes de puntos de control, actualice su código para cargar archivos con el nuevo nombre.
Consulte también
trainnet
| dlnetwork
| analyzeNetwork
| Deep Network Designer
Comando de MATLAB
Ha hecho clic en un enlace que corresponde a este comando de MATLAB:
Ejecute el comando introduciéndolo en la ventana de comandos de MATLAB. Los navegadores web no admiten comandos de MATLAB.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)