Contenido principal

La traducción de esta página aún no se ha actualizado a la versión más reciente. Haga clic aquí para ver la última versión en inglés.

trainnet

Entrenar redes neuronales de deep learning

Desde R2023b. Recomendado en lugar de trainNetwork.

    Descripción

    netTrained = trainnet(images,net,lossFcn,options) entrena la red neuronal especificada por net para tareas de imágenes utilizando las imágenes y objetivos especificados por images y las opciones de entrenamiento definidas por options.

    netTrained = trainnet(images,targets,net,lossFcn,options) entrena utilizando las imágenes especificadas por images y los objetivos especificados por targets.

    netTrained = trainnet(sequences,net,lossFcn,options) entrena una red neuronal para tareas de secuencias o series de tiempo (por ejemplo, una red neuronal de LSTM o GRU) utilizando las secuencias y objetivos especificados por sequences.

    netTrained = trainnet(sequences,targets,net,lossFcn,options) entrena utilizando las secuencias especificadas por sequences y los objetivos especificados por targets.

    netTrained = trainnet(features,net,lossFcn,options) entrena una red neuronal para tareas de características (por ejemplo, una red neuronal de perceptrón multicapa [MLP]) utilizando los datos de características y los objetivos especificados por features.

    ejemplo

    netTrained = trainnet(features,targets,net,lossFcn,options) entrena utilizando los datos de características especificados por features y los objetivos especificados por targets.

    netTrained = trainnet(data,net,lossFcn,options) entrena una red neuronal con otras disposiciones de datos o combinaciones de diferentes tipos de datos.

    [netTrained,info] = trainnet(___) también devuelve información sobre el entrenamiento utilizando cualquiera de las sintaxis anteriores.

    Ejemplos

    contraer todo

    Si tiene un conjunto de datos de imágenes, puede entrenar una red neuronal profunda utilizando una capa de entrada de imagen.

    Descomprima los datos de dígitos de muestra y cree un almacén de datos de imágenes. La función imageDatastore etiqueta automáticamente las imágenes en función de los nombres de carpeta.

    unzip("DigitsData.zip")
    
    imds = imageDatastore("DigitsData", ...
        IncludeSubfolders=true, ...
        LabelSource="foldernames");

    Divida los datos en conjuntos de datos de entrenamiento y de prueba, de forma que cada categoría del conjunto de entrenamiento contenga 750 imágenes, y el conjunto de prueba contenga el resto de las imágenes de cada etiqueta. splitEachLabel divide el almacén de datos de imágenes en dos nuevos almacenes de datos para el entrenamiento y la prueba.

    numTrainFiles = 750;
    [imdsTrain,imdsTest] = splitEachLabel(imds,numTrainFiles,"randomized");

    Defina la arquitectura de la red neuronal convolucional. Especifique el tamaño de las imágenes de la capa de entrada de la red y el número de clases de la capa final totalmente conectada. Cada imagen tiene un tamaño de 28 por 28 por 1 píxeles.

    inputSize = [28 28 1];
    numClasses = numel(categories(imds.Labels));
    
    layers = [
        imageInputLayer(inputSize)
        convolution2dLayer(5,20)
        batchNormalizationLayer
        reluLayer
        fullyConnectedLayer(numClasses)
        softmaxLayer];

    Especifique las opciones de entrenamiento.

    • Entrene usando el solver SGDM.

    • Entrene durante cuatro épocas.

    • Monitorice el progreso del entrenamiento en una gráfica y monitorice la métrica de precisión.

    • Deshabilite la salida detallada.

    options = trainingOptions("sgdm", ...
        MaxEpochs=4, ...
        Verbose=false, ...
        Plots="training-progress", ...
        Metrics="accuracy");

    Entrene la red neuronal. Para la clasificación, utilice la pérdida de entropía cruzada.

    net = trainnet(imdsTrain,layers,"crossentropy",options);

    Pruebe la red con el conjunto de pruebas con etiquetas.

    Extraiga los datos de imágenes y las etiquetas del almacén de datos de prueba.

    XTest = readall(imdsTest);
    TTest = imdsTest.Labels;
    classNames = categories(TTest);

    Concatene las imágenes en un arreglo numérico y conviértalo en único.

    XTest = cat(4,XTest{:});
    XTest = single(XTest);

    Prediga las puntuaciones de clasificación utilizando la red entrenada y luego convierta las predicciones en etiquetas con la función onehotdecode.

    YTest = minibatchpredict(net,XTest);
    YTest = onehotdecode(YTest,classNames,2);

    Visualice las predicciones en una gráfica de confusión.

    confusionchart(TTest,YTest)

    Figure contains an object of type ConfusionMatrixChart.

    Si tiene un conjunto de datos de características numéricas (por ejemplo, datos tabulares sin dimensiones espaciales ni temporales), puede entrenar una red neuronal profunda utilizando una capa de entrada de características.

    Lea los datos de la caja de engranajes del archivo CSV "transmissionCasingData.csv".

    filename = "transmissionCasingData.csv";
    tbl = readtable(filename,TextType="String");

    Convierta las etiquetas para la predicción en categóricas utilizando la función convertvars.

    labelName = "GearToothCondition";
    tbl = convertvars(tbl,labelName,"categorical");

    Para entrenar una red utilizando características categóricas, primero debe convertir las características categóricas en numéricas. Primero, convierta los predictores categóricos en numéricos con la función convertvars especificando un arreglo de cadena que contenga los nombres de todas las variables de entrada categórica. En este conjunto de datos, hay dos características categóricas con los nombres "SensorCondition" y "ShaftCondition".

    categoricalPredictorNames = ["SensorCondition" "ShaftCondition"];
    tbl = convertvars(tbl,categoricalPredictorNames,"categorical");

    Forme un lazo con las variables de entrada categórica. Para cada variable, convierta los valores categóricos en vectores codificados one-hot usando la función onehotencode.

    for i = 1:numel(categoricalPredictorNames)
        name = categoricalPredictorNames(i);
        tbl.(name) = onehotencode(tbl.(name),2);
    end

    Visualice las primeras filas de la tabla. Observe que los predictores categóricos se han dividido en varias columnas.

    head(tbl)
        SigMean     SigMedian    SigRMS    SigVar     SigPeak    SigPeak2Peak    SigSkewness    SigKurtosis    SigCrestFactor    SigMAD     SigRangeCumSum    SigCorrDimension    SigApproxEntropy    SigLyapExponent    PeakFreq    HighFreqPower    EnvPower    PeakSpecKurtosis    SensorCondition    ShaftCondition    GearToothCondition
        ________    _________    ______    _______    _______    ____________    ___________    ___________    ______________    _______    ______________    ________________    ________________    _______________    ________    _____________    ________    ________________    _______________    ______________    __________________
    
        -0.94876     -0.9722     1.3726    0.98387    0.81571       3.6314        -0.041525       2.2666           2.0514         0.8081        28562              1.1429             0.031581            79.931            0          6.75e-06       3.23e-07         162.13             0    1             1    0          No Tooth Fault  
        -0.97537    -0.98958     1.3937    0.99105    0.81571       3.6314        -0.023777       2.2598           2.0203        0.81017        29418              1.1362             0.037835            70.325            0          5.08e-08       9.16e-08         226.12             0    1             1    0          No Tooth Fault  
          1.0502      1.0267     1.4449    0.98491     2.8157       3.6314         -0.04162       2.2658           1.9487        0.80853        31710              1.1479             0.031565            125.19            0          6.74e-06       2.85e-07         162.13             0    1             0    1          No Tooth Fault  
          1.0227      1.0045     1.4288    0.99553     2.8157       3.6314        -0.016356       2.2483           1.9707        0.81324        30984              1.1472             0.032088             112.5            0          4.99e-06        2.4e-07         162.13             0    1             0    1          No Tooth Fault  
          1.0123      1.0024     1.4202    0.99233     2.8157       3.6314        -0.014701       2.2542           1.9826        0.81156        30661              1.1469              0.03287            108.86            0          3.62e-06       2.28e-07         230.39             0    1             0    1          No Tooth Fault  
          1.0275      1.0102     1.4338     1.0001     2.8157       3.6314         -0.02659       2.2439           1.9638        0.81589        31102              1.0985             0.033427            64.576            0          2.55e-06       1.65e-07         230.39             0    1             0    1          No Tooth Fault  
          1.0464      1.0275     1.4477     1.0011     2.8157       3.6314        -0.042849       2.2455           1.9449        0.81595        31665              1.1417             0.034159            98.838            0          1.73e-06       1.55e-07         230.39             0    1             0    1          No Tooth Fault  
          1.0459      1.0257     1.4402    0.98047     2.8157       3.6314        -0.035405       2.2757            1.955        0.80583        31554              1.1345               0.0353            44.223            0          1.11e-06       1.39e-07         230.39             0    1             0    1          No Tooth Fault  
    

    Visualice los nombres de las clases del conjunto de datos.

    classNames = categories(tbl{:,labelName})
    classNames = 2x1 cell
        {'No Tooth Fault'}
        {'Tooth Fault'   }
    
    

    Reserve datos para pruebas. Divida los datos en un conjunto de entrenamiento que contenga el 85% de los datos y en un conjunto de prueba que contenga el 15% restante. Para dividir los datos, use la función trainingPartitions, incluida en este ejemplo como un archivo de soporte. Para acceder al archivo, abra el ejemplo como un script en vivo.

    numObservations = size(tbl,1);
    [idxTrain,idxTest] = trainingPartitions(numObservations,[0.85 0.15]);
    
    tblTrain = tbl(idxTrain,:);
    tblTest = tbl(idxTest,:);

    Convierta los datos a un formato compatible con la función trainnet. Convierta los predictores y objetivos en arreglos numéricos y categóricos, respectivamente. Para la entrada de características, la red espera datos con filas que correspondan a las observaciones y columnas que correspondan a las características. Si los datos tienen un diseño diferente, puede preprocesarlos para que tengan este diseño o puede proporcionar información de diseño utilizando formatos de datos. Para obtener más información, consulte Deep Learning Data Formats.

    predictorNames = ["SigMean" "SigMedian" "SigRMS" "SigVar" "SigPeak" "SigPeak2Peak" ...
        "SigSkewness" "SigKurtosis" "SigCrestFactor" "SigMAD" "SigRangeCumSum" ...
        "SigCorrDimension" "SigApproxEntropy" "SigLyapExponent" "PeakFreq" ...
        "HighFreqPower" "EnvPower" "PeakSpecKurtosis" "SensorCondition" "ShaftCondition"];
    XTrain = table2array(tblTrain(:,predictorNames));
    TTrain = tblTrain.(labelName);
    
    XTest = table2array(tblTest(:,predictorNames));
    TTest = tblTest.(labelName);

    Defina una red con una capa de entrada de características y especifique el número de características. Configure también la capa de entrada para normalizar los datos utilizando la normalización de puntuación Z.

    numFeatures = size(XTrain,2);
    numClasses = numel(classNames);
     
    layers = [
        featureInputLayer(numFeatures,Normalization="zscore")
        fullyConnectedLayer(16)
        layerNormalizationLayer
        reluLayer
        fullyConnectedLayer(numClasses)
        softmaxLayer];

    Especifique las opciones de entrenamiento:

    • Entrenar usando el solver L-BFGS. Este solver es adecuado para tareas con redes pequeñas y cuando los datos caben en la memoria.

    • Entrenar usando la CPU. Dado que la red y los datos son pequeños, la CPU es más adecuada.

    • Muestre el progreso del entrenamiento en una gráfica.

    • Suprimir la salida detallada.

    options = trainingOptions("lbfgs", ...
        ExecutionEnvironment="cpu", ...
        Plots="training-progress", ...
        Verbose=false);

    Entrene la red con la función trainnet. Para la clasificación, utilice la pérdida de entropía cruzada.

    net = trainnet(XTrain,TTrain,layers,"crossentropy",options);

    Prediga las etiquetas de los datos de prueba con la red entrenada. Prediga las puntuaciones de clasificación utilizando la red entrenada y luego convierta las predicciones en etiquetas con la función onehotdecode.

    YTest = minibatchpredict(net,XTest);
    YTest = onehotdecode(YTest,classNames,2);

    Visualice las predicciones en una gráfica de confusión.

    confusionchart(TTest,YTest)

    Figure contains an object of type ConfusionMatrixChart.

    Calcule la precisión de clasificación. La precisión es la proporción de etiquetas que la red predice correctamente.

    accuracy = mean(YTest == TTest)
    accuracy = 
    1
    

    Argumentos de entrada

    contraer todo

    Datos

    Datos de imágenes, especificados como un arreglo numérico, objeto dlarray, almacén de datos u objeto minibatchqueue.

    Sugerencia

    Para secuencias de imágenes, por ejemplo, datos de vídeo, use el argumento de entrada sequences.

    Si tiene datos que caben en la memoria y que no requieren un procesamiento adicional, como el aumento de datos, especificar los datos de entrada como un arreglo numérico suele ser la opción más sencilla. Si desea entrenar una red con archivos de imagen almacenados en el disco o aplicar un procesamiento adicional como el aumento de datos, el uso de almacenes de datos suele ser la opción más sencilla. Para redes neuronales con varias salidas, debe usar un objeto TransformedDatastore, CombinedDatastore o minibatchqueue.

    Sugerencia

    Las redes neuronales esperan datos de entrada con una disposición específica. Por ejemplo, las redes de clasificación de imágenes suelen esperar que las representaciones de las imágenes sean arreglos numéricos de h por w por c, donde h, w y c son la altura, la anchura y el número de canales de las imágenes, respectivamente. La mayoría de las redes neuronales tienen una capa de entrada que especifica la disposición esperada de los datos.

    La mayoría de los almacenes de datos y funciones generan como salida datos con la disposición que espera la red. Si sus datos tienen una disposición diferente a la que espera la red, indique que sus datos tienen una disposición diferente utilizando la opción de entrenamiento InputDataFormats, especificando los datos como un objeto minibatchqueue y la propiedad MiniBatchFormat o especificando los datos de entrada como un objeto dlarray con formato. Suele ser más fácil especificar los formatos de los datos que preprocesar los datos de entrada. Si especifica tanto la opción de entrenamiento InputDataFormats como la propiedad MiniBatchFormat de minibatchqueue, estas deben coincidir.

    Para redes neuronales que no tienen capas de entrada, debe utilizar la opción de entrenamiento InputDataFormats, especificar los datos como un objeto minibatchqueue y utilizar la propiedad InputDataFormats, o utilizar objetos dlarray con formato.

    Las funciones de pérdida esperan datos con una disposición específica. Por ejemplo, para las redes de regresión de secuencia a vector, la función de pérdida suele esperar que los vectores objetivo se representen como un vector de 1 por R, donde R es el número de respuestas.

    La mayoría de los almacenes de datos y funciones generan datos en la disposición que espera la función de pérdida. Si sus datos objetivo tienen una disposición diferente a la que espera la función de pérdida, indique que sus objetivos tienen una disposición diferente utilizando la opción de entrenamiento TargetDataFormats, especificando los datos como un objeto minibatchqueue y la propiedad TargetDataFormats, o especificando los datos objetivo como un objeto dlarray con formato. Suele ser más fácil especificar los formatos de los datos que preprocesar los datos objetivo. Si especifica tanto la opción de entrenamiento TargetDataFormats como la propiedad TargetDataFormats de minibatchqueue, estas deben coincidir.

    Para obtener más información, consulte Deep Learning Data Formats.

    Arreglo numérico u objeto dlarray

    Para datos que quepan en la memoria y no requieran procesamiento adicional, como aumento, puede especificar un conjunto de datos de imágenes como un arreglo numérico o un objeto dlarray. Si especifica imágenes como un arreglo numérico o un objeto dlarray, también debe especificar el argumento targets.

    La disposición de los arreglos numéricos y de los objetos dlarray sin formato depende del tipo de datos de imágenes y debe ser coherente con la opción de entrenamiento InputDataFormats.

    La mayoría de las redes esperan datos de imágenes con estas disposiciones:

    DatosDistribución
    Imágenes 2D

    Arreglo de h por w por c por N, en el que h, w y c son la altura, la anchura y el número de canales de las imágenes, respectivamente, y N es el número de imágenes.

    En esta disposición, los datos tienen el formato "SSCB" (espacial, espacial, canal, lote).

    Imágenes 3D

    Arreglo de h por w por d por c por N, en el que h, w, d y c son la altura, la anchura, la profundidad y el número de canales de las imágenes, respectivamente, y N es el número de imágenes.

    En esta disposición, los datos tienen el formato "SSSCB" (espacial, espacial, espacial, canal, lote).

    Para los datos con una disposición diferente, indique que los datos tienen una disposición diferente usando la opción de entrenamiento InputDataFormats o utilice un objeto dlarray con formato. Para obtener más información, consulte Deep Learning Data Formats.

    Almacén de datos

    Los almacenes de datos leen lotes de imágenes y objetivos. Los almacenes de datos son más adecuados cuando tiene datos que no caben en la memoria o cuando quiera aplicar aumentos o transformaciones a los datos.

    Para datos de imágenes, la función trainnet admite estos almacenes de datos:

    Almacén de datosDescripciónEjemplo de uso
    ImageDatastore

    Almacén de datos de imágenes guardadas en disco.

    Entrenar redes neuronales de clasificación de imágenes con imágenes guardadas en disco, donde las imágenes tienen el mismo tamaño. Si las imágenes tienen diferentes tamaños, use un objeto augmentedImageDatastore.

    Los objetos ImageDatastore solo admiten el entrenamiento de redes de clasificación de imágenes. Para utilizar almacenes de datos de imágenes para entrenar redes neuronales de regresión, cree un almacén de datos transformado o combinado que contenga las imágenes y los objetivos utilizando las funciones transform y combine, respectivamente.

    augmentedImageDatastoreAlmacén de datos que aplica transformaciones geométricas afines aleatorias, incluyendo cambio de tamaño, rotación, reflexión, estiramiento y traslación.

    • Entrenar redes neuronales de clasificación de imágenes con imágenes guardadas en disco, donde las imágenes tienen distintos tamaños.

    • Entrenar redes neuronales de clasificación de imágenes y generar nuevos datos utilizando aumentos.

    TransformedDatastoreAlmacén de datos que transforma lotes de datos leídos de un almacén de datos subyacente mediante una función de transformación personalizada.

    • Entrenar redes neuronales de regresión de imágenes.

    • Entrenar redes neuronales con varias entradas.

    • Transformar almacenes de datos con salidas no compatibles con la función trainnet.

    • Aplicar transformaciones personalizadas a la salida del almacén de datos.

    CombinedDatastoreAlmacén de datos que lee de dos o más almacenes de datos subyacentes.

    • Entrenar redes neuronales de regresión de imágenes.

    • Entrenar redes neuronales con varias entradas.

    • Combinar predictores y objetivos de diferentes fuentes de datos.

    RandomPatchExtractionDatastore (Image Processing Toolbox)Almacén de datos que extrae pares de zonas aleatorias de imágenes o imágenes de etiquetas de píxeles y aplica opcionalmente transformaciones geométricas afines aleatorias idénticas a los pares.Entrenar redes neuronales para la detección de objetos.
    DenoisingImageDatastore (Image Processing Toolbox)Almacén de datos que aplica ruido gaussiano generado aleatoriamente.Entrenar redes neuronales para eliminar el ruido de una imagen.
    Almacén de datos de minilotes personalizadoAlmacén de datos personalizado que devuelve minilotes de datos.

    Entrenar redes neuronales usando datos en una disposición no compatible con otros almacenes de datos.

    Para obtener más detalles, consulte Develop Custom Mini-Batch Datastore.

    Para especificar los objetivos, el almacén de datos debe generar arreglos de celdas o tablas con numInputs+numOutputs columnas, donde numInputs y numOutputs son el número de entradas y salidas de la red, respectivamente. Las primeras numInputs columnas corresponden a las entradas de la red. Las últimas numOutput columnas corresponden a las salidas de la red. Las propiedades InputNames y OutputNames de la red neuronal especifican el orden de los datos de entrada y salida, respectivamente.

    Sugerencia

    Los objetos ImageDatastore permiten leer lotes de archivos de imágenes JPG o PNG mediante precarga. Para un preprocesamiento eficiente de imágenes para deep learning, incluyendo el cambio de tamaño de las imágenes, utilice un objeto augmentedImageDatastore. No use la propiedad ReadFcn de objetos ImageDatastore. Si establece la propiedad ReadFcn como una función personalizada, el objeto ImageDatastore no realiza la precarga de archivos de imágenes y suele ser bastante más lenta.

    Puede utilizar otros almacenes de datos integrados para probar redes neuronales de deep learning utilizando las funciones transform y combine. Estas funciones pueden convertir los datos leídos de almacenes de datos a la disposición requerida por trainnet. La disposición requerida de la salida del almacén de datos depende de la arquitectura de la red neuronal. Para obtener más información, consulte Personalización de almacenes de datos.

    Objeto minibatchqueue (desde R2024a)

    Para un mayor control sobre cómo el software procesa y transforma los minilotes, puede especificar los datos como un objeto minibatchqueue que devuelve los predictores y los objetivos.

    Si especifica los datos como un objeto minibatchqueue, la función trainnet ignora la propiedad MiniBatchSize del objeto y utiliza la opción de entrenamiento MiniBatchSize en su lugar.

    Para especificar los objetivos, minibatchqueue debe tener numInputs+numOutputs salidas, donde numInputs y numOutputs son el número de entradas y salidas de la red, respectivamente. Las primeras numInputs salidas corresponden a las entradas de la red. Las últimas numOutput salidas corresponden a las salidas de la red. Las propiedades InputNames y OutputNames de la red neuronal especifican el orden de los datos de entrada y salida, respectivamente.

    Nota

    Este argumento admite predictores y objetivos de valores complejos.

    Datos de secuencia o de series de tiempo, especificados como un arreglo numérico, un arreglo de celdas de arreglos numéricos, un objeto dlarray, un arreglo de celdas de objetos dlarray, un almacén de datos o un objeto minibatchqueue.

    Si tiene secuencias de la misma longitud que caben en la memoria y que no requieren un procesamiento adicional, especificar los datos de entrada como un arreglo numérico suele ser la opción más sencilla. Si tiene secuencias de distintas longitudes que caben en la memoria y que no requieren procesamiento adicional, especificar los datos de entrada como un arreglo de celdas de arreglos numéricos suele ser la opción más sencilla. Si desea entrenar una red con secuencias almacenadas en el disco o aplicar un procesamiento adicional, como transformaciones personalizadas, el uso de almacenes de datos suele ser la opción más sencilla. Para redes neuronales con varias entradas, debe usar un objeto TransformedDatastore o CombinedDatastore.

    Sugerencia

    Las redes neuronales esperan datos de entrada con una disposición específica. Por ejemplo, las redes de clasificación de secuencias de vectores suelen esperar que las representaciones de secuencias de vectores sean arreglos de t por c, donde t y c son el número de unidades de tiempo y los canales de las secuencias, respectivamente. Las redes neuronales suelen tener una capa de entrada que especifica la disposición esperada de los datos.

    La mayoría de los almacenes de datos y funciones generan como salida datos con la disposición que espera la red. Si sus datos tienen una disposición diferente a la que espera la red, indique que sus datos tienen una disposición diferente utilizando la opción de entrenamiento InputDataFormats, especificando los datos como un objeto minibatchqueue y la propiedad MiniBatchFormat o especificando los datos de entrada como un objeto dlarray con formato. Suele ser más fácil especificar los formatos de los datos que preprocesar los datos de entrada. Si especifica tanto la opción de entrenamiento InputDataFormats como la propiedad MiniBatchFormat de minibatchqueue, estas deben coincidir.

    Para redes neuronales que no tienen capas de entrada, debe utilizar la opción de entrenamiento InputDataFormats, especificar los datos como un objeto minibatchqueue y utilizar la propiedad InputDataFormats, o utilizar objetos dlarray con formato.

    Las funciones de pérdida esperan datos con una disposición específica. Por ejemplo, para las redes de regresión de secuencia a vector, la función de pérdida suele esperar que los vectores objetivo se representen como un vector de 1 por R, donde R es el número de respuestas.

    La mayoría de los almacenes de datos y funciones generan datos en la disposición que espera la función de pérdida. Si sus datos objetivo tienen una disposición diferente a la que espera la función de pérdida, indique que sus objetivos tienen una disposición diferente utilizando la opción de entrenamiento TargetDataFormats, especificando los datos como un objeto minibatchqueue y la propiedad TargetDataFormats, o especificando los datos objetivo como un objeto dlarray con formato. Suele ser más fácil especificar los formatos de los datos que preprocesar los datos objetivo. Si especifica tanto la opción de entrenamiento TargetDataFormats como la propiedad TargetDataFormats de minibatchqueue, estas deben coincidir.

    Para obtener más información, consulte Deep Learning Data Formats.

    Arreglo numérico, objeto dlarray o arreglo de celdas

    Para datos que quepan en la memoria y no requieran procesamiento adicional, como transformaciones personalizadas, puede especificar una única secuencia como un arreglo numérico o un objeto dlarray, o un conjunto de datos de secuencias como un arreglo de celdas de arreglos numéricos u objetos dlarray. Si especifica secuencias como un arreglo numérico, un arreglo de celdas o un objeto dlarray, también debe especificar el argumento targets.

    Para entradas en forma de arreglo de celdas, el arreglo de celdas debe ser un arreglo de celdas de N por 1 de arreglos numéricos u objetos dlarray, donde N es el número de observaciones. El tamaño y la forma de los arreglos numéricos u objetos dlarray que representan secuencias dependen del tipo de datos de secuencia y deben ser coherentes con la opción de entrenamiento InputDataFormats.

    Esta tabla describe la distribución esperada de los datos para una red neuronal con una capa de entrada de secuencias.

    DatosDistribución
    Secuencias de vectoresMatrices de s por c, donde s y c son el número de unidades de tiempo y canales (características) de las secuencias, respectivamente.
    Secuencias de imágenes 1DArreglos de h por c por s, donde h y c corresponden a la altura y el número de canales de las imágenes, respectivamente, y s es la longitud de la secuencia.
    Secuencias de imágenes 2DArreglos de h por w por c por s, donde h, w y c corresponden a la altura, la anchura y el número de canales de las imágenes, respectivamente, y s es la longitud de la secuencia.
    Secuencias de imágenes 3DArreglos de h por w por d por c por s, donde h, w, d y c corresponden a la altura, la anchura, la profundidad y el número de canales de las imágenes 3D, respectivamente, y s es la longitud de la secuencia.

    Para los datos con una disposición diferente, indique que los datos tienen una disposición diferente usando la opción de entrenamiento InputDataFormats o utilice un objeto dlarray con formato. Para obtener más información, consulte Deep Learning Data Formats.

    Almacén de datos

    Los almacenes de datos leen lotes de secuencias y objetivos. Los almacenes de datos son más adecuados cuando tiene datos que no caben en la memoria o cuando quiera aplicar transformaciones a los datos.

    Para los datos de secuencias y de series de tiempo, la función trainnet admite estos almacenes de datos:

    Almacén de datosDescripciónEjemplo de uso
    TransformedDatastoreAlmacén de datos que transforma lotes de datos leídos de un almacén de datos subyacente mediante una función de transformación personalizada.

    • Transformar almacenes de datos con salidas no compatibles con la función trainnet.

    • Aplicar transformaciones personalizadas a la salida del almacén de datos.

    CombinedDatastoreAlmacén de datos que lee de dos o más almacenes de datos subyacentes.

    Combinar predictores y objetivos de diferentes fuentes de datos.

    Almacén de datos de minilotes personalizadoAlmacén de datos personalizado que devuelve minilotes de datos.

    Entrenar redes neuronales usando datos en una disposición no compatible con otros almacenes de datos.

    Para obtener más detalles, consulte Develop Custom Mini-Batch Datastore.

    Para especificar los objetivos, el almacén de datos debe generar arreglos de celdas o tablas con numInputs+numOutputs columnas, donde numInputs y numOutputs son el número de entradas y salidas de la red, respectivamente. Las primeras numInputs columnas corresponden a las entradas de la red. Las últimas numOutput columnas corresponden a las salidas de la red. Las propiedades InputNames y OutputNames de la red neuronal especifican el orden de los datos de entrada y salida, respectivamente.

    Puede utilizar otros almacenes de datos integrados usando las funciones transform y combine. Estas funciones pueden convertir los datos leídos de almacenes de datos a la disposición requerida por trainnet. Por ejemplo, puede transformar y combinar datos leídos de arreglos en memoria y archivos CVS mediante objetos ArrayDatastore y TabularTextDatastore, respectivamente. La disposición requerida de la salida del almacén de datos depende de la arquitectura de la red neuronal. Para obtener más información, consulte Personalización de almacenes de datos.

    Objeto minibatchqueue (desde R2024a)

    Para un mayor control sobre cómo el software procesa y transforma los minilotes, puede especificar los datos como un objeto minibatchqueue que devuelve los predictores y los objetivos.

    Si especifica los datos como un objeto minibatchqueue, la función trainnet ignora la propiedad MiniBatchSize del objeto y utiliza la opción de entrenamiento MiniBatchSize en su lugar.

    Para especificar los objetivos, minibatchqueue debe tener numInputs+numOutputs salidas, donde numInputs y numOutputs son el número de entradas y salidas de la red, respectivamente. Las primeras numInputs salidas corresponden a las entradas de la red. Las últimas numOutput salidas corresponden a las salidas de la red. Las propiedades InputNames y OutputNames de la red neuronal especifican el orden de los datos de entrada y salida, respectivamente.

    Nota

    Este argumento admite predictores y objetivos de valores complejos.

    Datos de características o en tablas, especificados como un arreglo numérico, almacén de datos, tabla u objeto minibatchqueue.

    Si tiene datos que caben en la memoria y que no requieren un procesamiento adicional, especificar los datos de entrada como un arreglo numérico o tabla suele ser la opción más sencilla. Si desea entrenar una red con datos de características o en tablas almacenados en el disco, o aplicar un procesamiento adicional como transformaciones personalizadas, el uso de almacenes de datos suele ser la opción más sencilla. Para redes neuronales con varias entradas, debe usar un objeto TransformedDatastore o CombinedDatastore.

    Sugerencia

    Las redes neuronales esperan datos de entrada con una disposición específica. Por ejemplo, las redes de clasificación de características suelen esperar que las representaciones de características y datos en tablas sean vectores de 1 por c, donde c es el número de características de los datos. Las redes neuronales suelen tener una capa de entrada que especifica la disposición esperada de los datos.

    La mayoría de los almacenes de datos y funciones generan como salida datos con la disposición que espera la red. Si sus datos tienen una disposición diferente a la que espera la red, indique que sus datos tienen una disposición diferente utilizando la opción de entrenamiento InputDataFormats, especificando los datos como un objeto minibatchqueue y la propiedad MiniBatchFormat o especificando los datos de entrada como un objeto dlarray con formato. Suele ser más fácil especificar los formatos de los datos que preprocesar los datos de entrada. Si especifica tanto la opción de entrenamiento InputDataFormats como la propiedad MiniBatchFormat de minibatchqueue, estas deben coincidir.

    Para redes neuronales que no tienen capas de entrada, debe utilizar la opción de entrenamiento InputDataFormats, especificar los datos como un objeto minibatchqueue y utilizar la propiedad InputDataFormats, o utilizar objetos dlarray con formato.

    Las funciones de pérdida esperan datos con una disposición específica. Por ejemplo, para las redes de regresión de secuencia a vector, la función de pérdida suele esperar que los vectores objetivo se representen como un vector de 1 por R, donde R es el número de respuestas.

    La mayoría de los almacenes de datos y funciones generan datos en la disposición que espera la función de pérdida. Si sus datos objetivo tienen una disposición diferente a la que espera la función de pérdida, indique que sus objetivos tienen una disposición diferente utilizando la opción de entrenamiento TargetDataFormats, especificando los datos como un objeto minibatchqueue y la propiedad TargetDataFormats, o especificando los datos objetivo como un objeto dlarray con formato. Suele ser más fácil especificar los formatos de los datos que preprocesar los datos objetivo. Si especifica tanto la opción de entrenamiento TargetDataFormats como la propiedad TargetDataFormats de minibatchqueue, estas deben coincidir.

    Para obtener más información, consulte Deep Learning Data Formats.

    Arreglo numérico u objeto dlarray

    Para datos de características que quepan en la memoria y no requieran procesamiento adicional, como transformaciones personalizadas, puede especificar datos de características como un arreglo numérico. Si especifica datos de características como arreglo numérico, también debe especificar el argumento targets.

    La disposición de los arreglos numéricos y de los objetos dlarray sin formato debe ser coherente con la opción de entrenamiento InputDataFormats. La mayoría de las redes con entrada de características esperan datos de entrada especificados como un arreglo de N por numFeatures, donde N es el número de observaciones y numFeatures es el número de características de los datos de entrada.

    Tabla

    Para datos de características que quepan en la memoria y no requieran procesamiento adicional, como transformaciones personalizadas, puede especificar datos de características como una tabla. Si especifica datos de características como una tabla, no debe especificar el argumento targets.

    Para especificar datos de características como una tabla, especifique una tabla con numObservations filas y numFeatures+1 columnas, donde numObservations y numFeatures sean el número de observaciones y canales de los datos de entrada. La función trainnet utiliza las primeras numFeatures columnas como características de entrada y la última columna como objetivos.

    Almacén de datos

    Los almacenes de datos leen lotes de datos de características y objetivos. Los almacenes de datos son más adecuados cuando tiene datos que no caben en la memoria o cuando quiera aplicar transformaciones a los datos.

    Para los datos de características y en tablas, la función trainnet admite estos almacenes de datos:

    Tipo de datosDescripciónEjemplo de uso
    TransformedDatastoreAlmacén de datos que transforma lotes de datos leídos de un almacén de datos subyacente mediante una función de transformación personalizada.

    • Entrenar redes neuronales con varias entradas.

    • Transformar almacenes de datos con salidas no compatibles con la función trainnet.

    • Aplicar transformaciones personalizadas a la salida del almacén de datos.

    CombinedDatastoreAlmacén de datos que lee de dos o más almacenes de datos subyacentes.

    • Entrenar redes neuronales con varias entradas.

    • Combinar predictores y objetivos de diferentes fuentes de datos.

    Almacén de datos de minilotes personalizadoAlmacén de datos personalizado que devuelve minilotes de datos.

    Entrenar redes neuronales usando datos en una disposición no compatible con otros almacenes de datos.

    Para obtener más detalles, consulte Develop Custom Mini-Batch Datastore.

    Para especificar los objetivos, el almacén de datos debe generar arreglos de celdas o tablas con numInputs+numOutputs columnas, donde numInputs y numOutputs son el número de entradas y salidas de la red, respectivamente. Las primeras numInputs columnas corresponden a las entradas de la red. Las últimas numOutput columnas corresponden a las salidas de la red. Las propiedades InputNames y OutputNames de la red neuronal especifican el orden de los datos de entrada y salida, respectivamente.

    Puede utilizar otros almacenes de datos integrados para entrenar redes neuronales de deep learning utilizando las funciones transform y combine. Estas funciones pueden convertir los datos leídos de almacenes de datos al formato de tabla o arreglo de celdas requerido por trainnet. Para obtener más información, consulte Personalización de almacenes de datos.

    Objeto minibatchqueue (desde R2024a)

    Para un mayor control sobre cómo el software procesa y transforma los minilotes, puede especificar los datos como un objeto minibatchqueue que devuelve los predictores y los objetivos.

    Si especifica los datos como un objeto minibatchqueue, la función trainnet ignora la propiedad MiniBatchSize del objeto y utiliza la opción de entrenamiento MiniBatchSize en su lugar.

    Para especificar los objetivos, minibatchqueue debe tener numInputs+numOutputs salidas, donde numInputs y numOutputs son el número de entradas y salidas de la red, respectivamente. Las primeras numInputs salidas corresponden a las entradas de la red. Las últimas numOutput salidas corresponden a las salidas de la red. Las propiedades InputNames y OutputNames de la red neuronal especifican el orden de los datos de entrada y salida, respectivamente.

    Nota

    Este argumento admite predictores y objetivos de valores complejos.

    Datos genéricos o combinaciones de tipos de datos, especificados como un arreglo numérico, objeto dlarray, almacén de datos u objeto minibatchqueue.

    Si tiene datos que caben en la memoria y que no requieren un procesamiento adicional, especificar los datos de entrada como un arreglo numérico suele ser la opción más sencilla. Si desea entrenar una red con datos almacenados en el disco o aplicar un procesamiento adicional, el uso de almacenes de datos suele ser la opción más sencilla. Para redes neuronales con varias entradas, debe usar un objeto TransformedDatastore o CombinedDatastore.

    Sugerencia

    Las redes neuronales esperan datos de entrada con una disposición específica. Por ejemplo, las redes de clasificación de secuencias de vectores suelen esperar que las representaciones de secuencias de vectores sean arreglos de t por c, donde t y c son el número de unidades de tiempo y los canales de las secuencias, respectivamente. Las redes neuronales suelen tener una capa de entrada que especifica la disposición esperada de los datos.

    La mayoría de los almacenes de datos y funciones generan como salida datos con la disposición que espera la red. Si sus datos tienen una disposición diferente a la que espera la red, indique que sus datos tienen una disposición diferente utilizando la opción de entrenamiento InputDataFormats, especificando los datos como un objeto minibatchqueue y la propiedad MiniBatchFormat o especificando los datos de entrada como un objeto dlarray con formato. Suele ser más fácil especificar los formatos de los datos que preprocesar los datos de entrada. Si especifica tanto la opción de entrenamiento InputDataFormats como la propiedad MiniBatchFormat de minibatchqueue, estas deben coincidir.

    Para redes neuronales que no tienen capas de entrada, debe utilizar la opción de entrenamiento InputDataFormats, especificar los datos como un objeto minibatchqueue y utilizar la propiedad InputDataFormats, o utilizar objetos dlarray con formato.

    Las funciones de pérdida esperan datos con una disposición específica. Por ejemplo, para las redes de regresión de secuencia a vector, la función de pérdida suele esperar que los vectores objetivo se representen como un vector de 1 por R, donde R es el número de respuestas.

    La mayoría de los almacenes de datos y funciones generan datos en la disposición que espera la función de pérdida. Si sus datos objetivo tienen una disposición diferente a la que espera la función de pérdida, indique que sus objetivos tienen una disposición diferente utilizando la opción de entrenamiento TargetDataFormats, especificando los datos como un objeto minibatchqueue y la propiedad TargetDataFormats, o especificando los datos objetivo como un objeto dlarray con formato. Suele ser más fácil especificar los formatos de los datos que preprocesar los datos objetivo. Si especifica tanto la opción de entrenamiento TargetDataFormats como la propiedad TargetDataFormats de minibatchqueue, estas deben coincidir.

    Para obtener más información, consulte Deep Learning Data Formats.

    Objetos numéricos o dlarray

    Para datos que quepan en la memoria y no requieran procesamiento adicional, como transformaciones personalizadas, puede especificar datos de características como un arreglo numérico. Si especifica datos de características como arreglo numérico, también debe especificar el argumento targets.

    Para una red neuronal con un objeto inputLayer, la disposición esperada de los datos de entrada es una dada por la propiedad InputFormat de la capa.

    Para los datos con una disposición diferente, indique que los datos tienen una disposición diferente usando la opción de entrenamiento InputDataFormats o utilice un objeto dlarray con formato. Para obtener más información, consulte Deep Learning Data Formats.

    Almacenes de datos

    Los almacenes de datos leen lotes de datos y objetivos. Los almacenes de datos son más adecuados cuando tiene datos que no caben en la memoria o cuando quiera aplicar transformaciones a los datos.

    Para datos genéricos o combinaciones de tipos de datos, la función trainnet admite estos almacenes de datos:

    Tipo de datosDescripciónEjemplo de uso
    TransformedDatastoreAlmacén de datos que transforma lotes de datos leídos de un almacén de datos subyacente mediante una función de transformación personalizada.

    • Entrenar redes neuronales con varias entradas.

    • Transformar salidas de almacenes de datos no compatibles con trainnet para que tengan el formato requerido.

    • Aplicar transformaciones personalizadas a la salida del almacén de datos.

    CombinedDatastoreAlmacén de datos que lee de dos o más almacenes de datos subyacentes.

    • Entrenar redes neuronales con varias entradas.

    • Combinar predictores y objetivos de diferentes fuentes de datos.

    Almacén de datos de minilotes personalizadoAlmacén de datos personalizado que devuelve minilotes de datos.

    Entrenar redes neuronales usando datos en un formato no compatible con otros almacenes de datos.

    Para obtener más detalles, consulte Develop Custom Mini-Batch Datastore.

    Para especificar los objetivos, el almacén de datos debe generar arreglos de celdas o tablas con numInputs+numOutputs columnas, donde numInputs y numOutputs son el número de entradas y salidas de la red, respectivamente. Las primeras numInputs columnas corresponden a las entradas de la red. Las últimas numOutput columnas corresponden a las salidas de la red. Las propiedades InputNames y OutputNames de la red neuronal especifican el orden de los datos de entrada y salida, respectivamente.

    Puede utilizar otros almacenes de datos integrados usando las funciones transform y combine. Estas funciones pueden convertir los datos leídos de almacenes de datos al formato de tabla o arreglo de celdas requerido por trainnet. Para obtener más información, consulte Personalización de almacenes de datos.

    Objeto minibatchqueue (desde R2024a)

    Para un mayor control sobre cómo el software procesa y transforma los minilotes, puede especificar los datos como un objeto minibatchqueue que devuelve los predictores y los objetivos.

    Si especifica los datos como un objeto minibatchqueue, la función trainnet ignora la propiedad MiniBatchSize del objeto y utiliza la opción de entrenamiento MiniBatchSize en su lugar.

    Para especificar los objetivos, minibatchqueue debe tener numInputs+numOutputs salidas, donde numInputs y numOutputs son el número de entradas y salidas de la red, respectivamente. Las primeras numInputs salidas corresponden a las entradas de la red. Las últimas numOutput salidas corresponden a las salidas de la red. Las propiedades InputNames y OutputNames de la red neuronal especifican el orden de los datos de entrada y salida, respectivamente.

    Nota

    Este argumento admite predictores y objetivos de valores complejos.

    Objetivos de entrenamiento, especificados como un arreglo categórico, arreglo numérico o arreglo de celdas de secuencias.

    Para especificar objetivos para redes con múltiples salidas, especifique los objetivos utilizando los argumentos images, sequences, features o data.

    Sugerencia

    Las funciones de pérdida esperan datos con una disposición específica. Por ejemplo, para las redes de regresión de secuencia a vector, la función de pérdida suele esperar que los vectores objetivo se representen como un vector de 1 por R, donde R es el número de respuestas.

    La mayoría de los almacenes de datos y funciones generan datos en la disposición que espera la función de pérdida. Si sus datos objetivo tienen una disposición diferente a la que espera la función de pérdida, indique que sus objetivos tienen una disposición diferente utilizando la opción de entrenamiento TargetDataFormats, especificando los datos como un objeto minibatchqueue y la propiedad TargetDataFormats, o especificando los datos objetivo como un objeto dlarray con formato. Suele ser más fácil especificar los formatos de los datos que preprocesar los datos objetivo. Si especifica tanto la opción de entrenamiento TargetDataFormats como la propiedad TargetDataFormats de minibatchqueue, estas deben coincidir.

    Para obtener más información, consulte Deep Learning Data Formats.

    La disposición esperada de los objetivos depende de la función de pérdida y del tipo de tarea. Los objetivos incluidos en esta lista son únicamente un subconjunto. Las funciones de pérdida pueden admitir objetivos adicionales con disposiciones diferentes, como objetivos con dimensiones adicionales. Para las funciones de pérdida personalizadas, el software utiliza la información de formato de los datos de salida de la red para determinar el tipo de datos objetivo y aplica la disposición correspondiente en esta tabla.

    Función de pérdidaObjetivoDisposición del objetivo
    "crossentropy"Etiquetas categóricasVector categórico de etiquetas de N por 1, en el que N es el número de observaciones.
    Secuencias de etiquetas categóricas

    • Arreglo categórico de t por N, donde t y N son el número de unidades de tiempo y observaciones, respectivamente.

    • Arreglo de celdas de N por 1 de secuencias, donde N es el número de observaciones. Las secuencias son vectores categóricos de t por 1. Las secuencias pueden tener distintas longitudes.

    "index-crossentropy"Etiquetas categóricasVector categórico de etiquetas de N por 1, en el que N es el número de observaciones.
    Índices de claseVector numérico de N por 1 de índices de clase, donde N es el número de observaciones.
    Secuencias de etiquetas categóricas

    • Arreglo categórico de t por N, donde t y N son el número de unidades de tiempo y observaciones, respectivamente.

    • Arreglo de celdas de N por 1 de secuencias, donde N es el número de observaciones. Las secuencias son vectores categóricos de t por 1. Las secuencias pueden tener distintas longitudes.

    Secuencias de índices de clase

    • Matriz de t por N de índices de clase, donde t y N son el número de unidades de tiempo y observaciones, respectivamente.

    • Arreglo de celdas de N por 1 de secuencias, donde N es el número de observaciones. Las secuencias son vectores numéricos de t por 1 de índices de clase. Las secuencias pueden tener distintas longitudes.

    "binary-crossentropy"Etiquetas binarias (etiqueta única)

    Vector de N por 1, donde N es el número de observaciones.

    Etiquetas binarias (multietiqueta)

    Matriz de N por c, donde N and c son el número de observaciones y clases, respectivamente.

    • "mse"

    • "mean-squared-error"

    • "l2loss"

    • "mae"

    • "mean-absolute-error"

    • "l1loss"

    • "huber"

    Escalares numéricos

    Vector de N por 1, donde N es el número de observaciones.

    Vectores numéricos

    Matriz de N por R, en la que N es el número de observaciones y R es el número de respuestas.

    Imágenes 2D

    Arreglo numérico de h por w por c por N, en el que h, w y c son la altura, la anchura y el número de canales de las imágenes, respectivamente, y N es el número de imágenes.

    Imágenes 3D
    • Arreglo numérico de h por w por d por c por N, en el que h, w, d y c son la altura, la anchura, la profundidad y el número de canales de las imágenes, respectivamente, y N es el número de imágenes.

    Secuencias numéricas de escalares
    • Arreglo de t por 1 por N, donde t y N son el número de unidades de tiempo y secuencias, respectivamente.

    • Arreglo de celdas de N por 1 de secuencias, donde N es el número de secuencias. Las secuencias son vectores de t por 1, donde t es el número de unidades de tiempo. Las secuencias pueden tener distintas longitudes.

    Secuencias numéricas de vectores

    • Arreglo de t por c por N, donde t, c y N son el número de unidades de tiempo, canales y secuencias, respectivamente.

    • Arreglo de celdas de N por 1 de secuencias, donde N es el número de secuencias. Las secuencias son matrices de t por c, donde t y c son el número de unidades de tiempo y canales de las secuencias, respectivamente. Las secuencias pueden tener distintas longitudes.

    Secuencias de imágenes 1D

    • Arreglo de h por c por N por t, donde h, c y t son la altura, el número de canales y el número de unidades de tiempo de las secuencias, respectivamente, y N es el número de secuencias.

    • Arreglo de celdas de N por 1 de secuencias, donde N es el número de secuencias. Las secuencias son arreglos de h por c por t, donde h, t y c son la altura, el número de unidades de tiempo y el número de canales de las secuencias, respectivamente. Las secuencias pueden tener distintas longitudes.

    Secuencias de imágenes 2D

    • Arreglo de h por w por c por N por t, donde h, w, c y t son la altura, la anchura, el número de canales y el número de unidades de tiempo de las secuencias, respectivamente, y N es el número de secuencias.

    • Arreglo de celdas de N por 1 de secuencias, donde N es el número de secuencias. Las secuencias son arreglos de h por w por c por t, donde h, w, t y c son la altura, la anchura, el número de unidades de tiempo y el número de canales de las secuencias, respectivamente. Las secuencias pueden tener distintas longitudes.

    Secuencias de imágenes 3D

    • Arreglo de h por w por d por c por N por t, donde h, w, d, c y t son la altura, la anchura, la profundidad, el número de canales y el número de unidades de tiempo de las secuencias, respectivamente, y N es el número de secuencias.

    • Arreglo de celdas de N por 1 de secuencias, donde N es el número de secuencias. Las secuencias son arreglos de h por w por d por c por t, donde h, w, d, t y c son la altura, la anchura, la profundidad, el número de unidades de tiempo y el número de canales de las secuencias, respectivamente. Las secuencias pueden tener distintas longitudes.

    Para los objetivos con una disposición diferente, indique que sus objetivos tienen una disposición diferente usando la opción de entrenamiento TargetDataFormats o utilice un objeto dlarray con formato. Para obtener más información, consulte Deep Learning Data Formats.

    Sugerencia

    Normalizar los objetivos suele ayudar a estabilizar y acelerar el entrenamiento de las redes neuronales para la regresión. Para obtener más información, consulte Entrenar una red neuronal convolucional para regresión.

    Detalles de entrenamiento

    Arquitectura de red neuronal, especificada como un objeto dlnetwork o un arreglo de capas.

    Para ver una lista de capas de red neuronal integradas, consulte Lista de capas de deep learning.

    Función de pérdida que se desea usar para el entrenamiento, especificada como uno de estos valores:

    • "crossentropy": pérdida de entropía cruzada para tareas de clasificación.

    • "index-crossentropy" (desde R2024b): índice de pérdida de entropía cruzada para tareas de clasificación. Utilice esta opción para ahorrar memoria cuando haya muchas clases categóricas.

    • "binary-crossentropy": pérdida de entropía cruzada binaria para tareas de clasificación binarias y multietiqueta.

    • "mae" / "mean-absolute-error" / "l1loss": error medio absoluto para tareas de regresión.

    • "mse" / "mean-squared-error" / "l2loss": error cuadrático medio para tareas de regresión.

    • "huber": pérdida de Huber para tareas de regresión

    • Identificador de función con la sintaxis loss = f(Y1,...,Yn,T1,...,Tm), donde Y1,...,Yn son objetos dlarray que se corresponden con las predicciones de la red n y T1,...,Tm son objetos dlarray que se corresponden con los objetivos m.

    • Objeto deep.DifferentiableFunction (desde R2024a): objeto de función con una función de retropropagación personalizada.

    Sugerencia

    Para la entropía cruzada ponderada, utilice el identificador de función @(Y,T)crossentropy(Y,T,weights).

    Para obtener más información sobre cómo definir una función personalizada, consulte Define Custom Deep Learning Operations.

    Opciones de entrenamiento, especificadas como un objeto TrainingOptionsSGDM, TrainingOptionsRMSProp, TrainingOptionsADAM, TrainingOptionsLBFGS o TrainingOptionsLM, devuelto por la función trainingOptions.

    Argumentos de salida

    contraer todo

    Red entrenada, devuelta como un objeto dlnetwork.

    Información de entrenamiento, devuelta como un objeto TrainingInfo con estas propiedades:

    • TrainingHistory: información sobre las iteraciones de entrenamiento

    • ValidationHistory: información sobre las iteraciones de validación

    • OutputNetworkIteration: iteración que corresponde a la red entrenada

    • StopReason: motivo por el que se detuvo el entrenamiento

    También puede utilizar info para abrir y cerrar la gráfica de progreso del entrenamiento usando las funciones show y close.

    Más acerca de

    contraer todo

    Sugerencias

    • Para tareas de regresión, normalizar los objetivos suele ayudar a estabilizar y acelerar el entrenamiento. Para obtener más información, consulte Entrenar una red neuronal convolucional para regresión.

    • En la mayoría de los casos, si el predictor o los objetivos contienen valores NaN, estos se propagan por la red y el entrenamiento no converge.

    • Para convertir un arreglo numérico a un almacén de datos, use ArrayDatastore.

    • Cuando combine capas en una red neuronal con tipos de datos mezclados, puede que tenga que volver a establecer el formato de los datos antes de pasarlos a una capa de combinación (como una capa de concatenación o una capa de suma). Para volver a establecer el formato de los datos, puede utilizar una capa aplanada para aplanar las dimensiones espaciales a la dimensión del canal, o crear un objeto FunctionLayer o una capa personalizada que vuelva a establecer el formato y cambie la forma de los datos.

    Algoritmos

    contraer todo

    Capacidades ampliadas

    expandir todo

    Historial de versiones

    Introducido en R2023b

    expandir todo