Main Content

dlarray

Arreglo de deep learning para personalización

Desde R2019b

Descripción

Un arreglo de deep learning almacena datos con etiquetas de formato opcionales de datos para bucles de entrenamiento personalizados y permite que las funciones calculen y usen derivadas a través de la diferenciación automática.

Sugerencia

Para la mayor parte de las tareas de deep learning, puede utilizar una red neuronal preentrenada y adaptarla a sus propios datos. Para ver un ejemplo de cómo usar la transferencia del aprendizaje para volver a entrenar una red neuronal convolucional para clasificar un nuevo conjunto de imágenes, consulte Retrain Neural Network to Classify New Images. Como alternativa, puede crear y entrenar redes neuronales desde cero usando las funciones trainnet y trainingOptions.

Si la función trainingOptions no proporciona las opciones de entrenamiento que necesita para la tarea, puede crear un bucle de entrenamiento personalizado mediante diferenciación automática. Para obtener más información, consulte Entrenar una red con un bucle de entrenamiento personalizado.

Si la función trainnet no proporciona la función de pérdida que necesita para la tarea, puede especificar una función de pérdida personalizada para trainnet como identificador de función. En el caso de 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 mediante 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.

Creación

Descripción

ejemplo

dlX = dlarray(X) devuelve un objeto dlarray que representa X. Si X es un dlarray, dlX es una copia de X.

ejemplo

dlX = dlarray(X,fmt) formatea los datos de dlX con etiquetas de dimensión según el formato de los datos en fmt. Las etiquetas de dimensión ayudan a pasar datos de deep learning entre funciones. Para obtener más información sobre las etiquetas de dimensión, consulte Uso. Si X es un dlarray con formato, fmt reemplaza el formato existente.

ejemplo

dlX = dlarray(v,dim) acepta un vector v y un formato de un solo carácter dim, y devuelve un vector columna dlarray. La primera dimensión de dlX tiene la etiqueta de dimensión dim, y la segunda dimensión (única) tiene la etiqueta de dimensión 'U'.

Argumentos de entrada

expandir todo

Arreglo de datos, especificado como un arreglo numérico del tipo de datos double o single, un arreglo logical, un objeto gpuArray o un objeto dlarray. X debe estar lleno, no disperso.

Ejemplo: rand(31*23,23)

Tipos de datos: single | double | logical
Soporte de números complejos:

Formato de los datos, especificado como escalar de cadena o vector de caracteres. Cada carácter de la cadena debe ser una de las etiquetas de dimensión siguientes:

  • "S": espacial

  • "C": canal

  • "B": lote

  • "T": tiempo

  • "U": sin especificar

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.

Cuando crea un objeto dlarray con formato, el software automáticamente permuta las dimensiones, de tal manera que las dimensiones del formato se encuentran en este orden:

  • "S"

  • "C"

  • "B"

  • "T"

  • "U"

Por ejemplo, si especifica un formato de "TCB" (tiempo, canal, lote). el software automáticamente permuta las dimensiones para que tengan el formato "CBT" (canal, lote, tiempo).

fmt debe contener al menos el mismo número de etiquetas que el número de dimensiones de los datos de entrada. Si especifica más etiquetas de dimensión que el número de dimensiones de los datos de entrada, dlarray creará dimensiones vacías (únicas) para las etiquetas adicionales.

En la siguiente tabla se indican los formatos de datos recomendados para tipos de datos habituales.

Datos Ejemplo
FormaFormato de los datos
Imágenes 2D

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

"SSCB"
Imágenes 3DArreglo numérico de h por w por d por c por n, en el que h, w, d, c y n son la altura, la anchura, el número de canales de las imágenes y el número de observaciones de las imágenes, respectivamente."SSSCB"
Secuencias de vectores

Matriz de c por s por n, donde c es el número de características de la secuencia, s es la longitud de la secuencia y n es el número de observaciones de la secuencia.

"CTB"
Secuencias de imágenes 2D

Arreglo de h por w por c por s por n, donde h, w y c corresponden a la altura, la anchura y el número de canales de la imagen, respectivamente, s es la longitud de la secuencia y n es el número de observaciones de la secuencia de la imagen.

"SSCTB"
Secuencias de imágenes 3D

Arreglo de h por w por d por c por s por n, donde h, w, d y c corresponden a la altura, la anchura, la profundidad y el número de canales de la imagen, respectivamente, s es la longitud de la secuencia y n es el número de observaciones de la secuencia de la imagen.

"SSSCTB"
CaracterísticasArreglo de c por n, donde c es el número de características y n es el número de observaciones."CB"

Vector de datos, especificado como un vector numérico de tipo de datos doble o simple, vector lógico u objeto de vector dlarray. Aquí, "vector" se refiere a cualquier arreglo con exactamente una dimensión no única.

Ejemplo: rand(100,1)

Etiqueta de dimensión, especificada como un solo carácter del tipo permitido para fmt.

Ejemplo: "S"

Ejemplo: 'S'

Argumentos de salida

expandir todo

Arreglo de deep learning, devuelto como un objeto dlarray. dlX permite la diferenciación automática empleando dlgradient y dlfeval. Si proporciona el argumento fmt, dlX tiene etiquetas.

  • Si X es un arreglo numérico o lógico, dlX contiene sus datos, posiblemente reordenados por el formato de los datos en fmt.

  • Si X es un gpuArray, los datos en dlX también se encuentran en la GPU. Los cálculos subsiguientes empleando dlX se llevan a cabo en la GPU.

Uso

Los formatos de datos dlarray permiten ejecutar las funciones en la tabla siguiente con la seguridad de que los datos tienen la forma adecuada.

FunciónOperaciónValida la dimensión de entradaAfecta al tamaño de la dimensión de entrada
avgpoolCalcula el promedio de los datos de entrada sobre regiones espaciales rectangulares (o cúbicas) ('S') móviles definidas por un parámetro de tamaño de grupo.'S''S'
batchnormPermite normalizar los valores contenidos en cada canal ('C') de los datos de entrada.'C' 
crossentropyPermite calcular la entropía cruzada entre las estimaciones y los valores objetivo, promediada por el tamaño de la dimensión del lote ('B').'S', 'C', 'B', 'T', 'U' (Las estimaciones y los arreglos objetivo deben tener el mismo tamaño).'S', 'C', 'B', 'T', 'U' (La salida es un escalar sin formato).
dlconvPermite calcular la convolución de deep learning de los datos de entrada utilizando un arreglo de filtros, coincidiendo con el número de dimensiones espaciales ('S') y (una función de las) dimensiones del canal ('C') de entrada y añadiendo un sesgo constante.'S', 'C''S', 'C'
dltranspconvPermite calcular la convolución traspuesta de deep learning de los datos de entrada utilizando un arreglo de filtros, coincidiendo con el número de dimensiones espaciales ('S') y (una función de las) dimensiones del canal ('C') de entrada y añadiendo un sesgo constante.'S', 'C''S', 'C'
fullyconnectPermite calcular una suma ponderada de los datos de entrada y aplicar un sesgo para la dimensión de cada lote ('B') y tiempo ('T').'S', 'C', 'U''S', 'C', 'B', 'T', 'U' (La salida siempre tiene el formato de datos 'CB', 'CT' o 'CTB').
gru

Permite aplicar un cálculo de unidad recurrente cerrada a los datos de entrada.

'S', 'C', 'T''C'
lstm

Permite aplicar un cálculo de memoria de corto-largo plazo a los datos de entrada.

'S', 'C', 'T''C'
maxpoolPermite calcular el máximo de los datos de entrada sobre regiones espaciales ('S') rectangulares en movimiento definidas por un parámetro de tamaño de grupo.'S''S'
maxunpoolPermite calcular la operación de desagrupar las dimensiones espaciales ('S').'S''S'
msePermite calcular el error cuadrático medio a la mitad entre las estimaciones y los valores objetivo, promediado por el tamaño de la dimensión del lote ('B').'S', 'C', 'B', 'T', 'U' (Las estimaciones y los arreglos objetivo deben tener el mismo tamaño).'S', 'C', 'B', 'T', 'U' (La salida es un escalar sin formato).
softmaxPermite aplicar la activación softmax a cada canal ('C') de los datos de entrada.'C' 

Estas dimensiones requieren que cada dimensión tenga una etiqueta. Puede especificar el formato de etiqueta de dimensión proporcionando la primera entrada como un dlarray con formato o utilizando el argumento de nombre-valor 'DataFormat' de la función.

dlarray aplica el orden de la etiqueta de dimensión de 'SCBTU'. Esta operación elimina la semántica ambigua en las operaciones que emparejan implícitamente las etiquetas entre entradas. dlarray también hace que las etiquetas de dimensión 'C', 'B' y 'T' solo puedan aparecer como máximo una vez cada una. Las funciones que usan estas etiquetas de dimensión aceptan como máximo una dimensión para cada etiqueta.

dlarray proporciona funciones para obtener el formato de datos asociado con un dlarray (dims), eliminar el formato de datos (stripdims) y obtener las dimensiones asociadas con etiquetas de dimensión concretas (finddim).

Para obtener más información sobre cómo funciona dlarray con formatos, consulte Notable dlarray Behaviors.

Funciones del objeto

avgpoolPool data to average values over spatial dimensions
batchnormNormalize data across all observations for each channel independently
crossentropyCross-entropy loss for classification tasks
dimsEtiquetas de dimensión de dlarray
dlconvDeep learning convolution
dlgradientCompute gradients for custom training loops using automatic differentiation
dltranspconvDeep learning transposed convolution
extractdataExtraer datos de dlarray
finddimFind dimensions with specified label
fullyconnectSum all weighted input data and apply a bias
gruGated recurrent unit
leakyreluApply leaky rectified linear unit activation
lstmMemoria de corto-largo plazo
maxpoolPool data to maximum value
maxunpoolUnpool the output of a maximum pooling operation
mseError cuadrático medio dividido
reluAplicar la activación de unidad lineal rectificada
sigmoidAplicar la activación sigmoide
softmaxApply softmax activation to channel dimension
stripdimsRemove dlarray data format

Un dlarray también permite funciones para operaciones numéricas, de matrices y de otros tipos. Puede consultar la lista completa en List of Functions with dlarray Support.

Ejemplos

contraer todo

Cree un dlarray sin formato a partir de una matriz.

X = randn(3,5);
dlX = dlarray(X)
dlX = 
  3x5 dlarray

    0.5377    0.8622   -0.4336    2.7694    0.7254
    1.8339    0.3188    0.3426   -1.3499   -0.0631
   -2.2588   -1.3077    3.5784    3.0349    0.7147

Cree un dlarray que tenga un formato de datos que contenga las etiquetas de dimensión 'S' y 'C'.

X = randn(3,5);
dlX = dlarray(X,'SC')
dlX = 
  3(S) x 5(C) dlarray

    0.5377    0.8622   -0.4336    2.7694    0.7254
    1.8339    0.3188    0.3426   -1.3499   -0.0631
   -2.2588   -1.3077    3.5784    3.0349    0.7147

Si especifica las etiquetas de dimensión en el orden inverso, dlarray reordena implícitamente los datos subyacentes.

dlX = dlarray(X,'CS')
dlX = 
  5(S) x 3(C) dlarray

    0.5377    1.8339   -2.2588
    0.8622    0.3188   -1.3077
   -0.4336    0.3426    3.5784
    2.7694   -1.3499    3.0349
    0.7254   -0.0631    0.7147

Cree un vector de dlarray con la primera etiqueta de dimensión 'T'. La segunda etiqueta de dimensión, que dlarray crea de forma automática, es 'U'.

X = randn(6,1);
dlX = dlarray(X,'T')
dlX = 
  6(T) x 1(U) dlarray

    0.5377
    1.8339
   -2.2588
    0.8622
    0.3188
   -1.3077

Si especifica un vector fila para X, dlarray reordena implícitamente el resultado para que sea un vector columna.

X = X';
dlX = dlarray(X,'T')
dlX = 
  6(T) x 1(U) dlarray

    0.5377
    1.8339
   -2.2588
    0.8622
    0.3188
   -1.3077

Sugerencias

Capacidades ampliadas

Historial de versiones

Introducido en R2019b

expandir todo