Main Content

activations

(No recomendado) Calcular las activaciones de las capas de una red de deep learning

No se recomienda el uso de activations. Utilice la función minibatchpredict en su lugar y especifique la opción Outputs. Para obtener más información, consulte Historial de versiones.

Descripción

Puede calcular las activaciones de las capas de una red de deep learning tanto en una CPU como en una GPU. Utilizar una GPU requiere una licencia de Parallel Computing Toolbox™ y un dispositivo GPU compatible. Para obtener información sobre los dispositivos compatibles, consulte GPU Computing Requirements (Parallel Computing Toolbox). Especifique los requisitos de hardware mediante el argumento nombre-valor ExecutionEnvironment.

ejemplo

act = activations(net,images,layer) devuelve las activaciones de red para la capa con nombre o número layer mediante las imágenes especificadas.

act = activations(net,sequences,layer) devuelve las activaciones de red para la capa mediante las secuencias especificadas.

act = activations(net,features,layer) devuelve las activaciones de red para la capa mediante los datos de características especificadas.

act = activations(net,X1,...,XN,layer) devuelve las activaciones de red para la capa mediante los datos de los arreglos numéricos o de celdas X1, …, XN para la red con varias entradas net. La entrada Xi corresponde a la entrada de la red net.InputNames(i).

act = activations(net,mixed,layer) devuelve las activaciones de red para la capa mediante la red entrenada net con varias entradas de tipos de datos mezclados.

act = activations(___,Name=Value) devuelve activaciones de red con opciones adicionales especificadas por uno o más argumentos de par nombre-valor. Por ejemplo, OutputAs="rows" especifica el formato de salida de la activación como "rows". Use esta sintaxis con cualquiera de los argumentos de entrada de las sintaxis anteriores. Especifique los argumentos nombre-valor después del resto de los argumentos de entrada.

Ejemplos

contraer todo

Visualice las activaciones de una red neuronal.

Cargue una red neuronal SqueezeNet preentrenada.

net = squeezenet;

Lea una imagen de ejemplo.

I = imread("peppers.png");

Evalúe las activaciones de red para la capa con el nombre "fire2-squeeze1x1".

act = activations(net,I,"fire2-squeeze1x1");

Muestre las activaciones para cada canal.

act = mat2gray(act);
act = imtile(act);
figure
imshow(act)

montage plot showing neural network activations

Argumentos de entrada

contraer todo

Red entrenada, especificada como un objeto SeriesNetwork o DAGNetwork. Puede obtener una red entrenada importando una red preentrenada (por ejemplo, utilizando la función googlenet) o entrenando su propia red mediante trainNetwork.

Datos de imágenes, especificados como una de las siguientes opciones:

Tipo de datosDescripciónEjemplo de uso
Almacén de datosImageDatastoreAlmacén de datos de imágenes guardadas en disco

Hacer predicciones 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.

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

Hacer predicciones con imágenes guardadas en disco, donde las imágenes tienen distinto tamaño.

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 activations.

  • 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

  • Hacer predicciones mediante redes con varias entradas.

  • Combinar predictores de diferentes fuentes de datos.

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

Hacer predicciones usando datos en un formato no compatible con otros almacenes de datos.

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

Arreglo numéricoImágenes especificadas como arreglo numéricoHacer predicciones usando datos que quepan en la memoria y no requieran procesamiento adicional, como un cambio de tamaño.
TablaImágenes especificadas como tablaHacer predicciones usando datos guardados en una tabla.

Cuando utiliza un almacén de datos con redes con varias entradas, el almacén de datos debe ser un objeto TransformedDatastore o CombinedDatastore.

Sugerencia

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

Almacén de datos

Los almacenes de datos leen minilotes de imágenes y respuestas. Use almacenes de datos cuando tenga datos que no caben en la memoria o cuando quiera cambiar el tamaño de los datos de entrada.

Estos almacenes de datos son directamente compatibles con activations para datos de imágenes:

Sugerencia

Use augmentedImageDatastore para preprocesar eficiente de las imágenes para deep learning, incluyendo el cambio de tamaño de las imágenes. No use la opción ReadFcn de objetos ImageDatastore.

ImageDatastore permite leer lotes de archivos de imágenes JPG o PNG mediante precarga. Si establece la opción ReadFcn como una función personalizada, ImageDatastore no realiza la precarga y suele ser bastante más lenta.

Puede utilizar otros almacenes de datos integrados para hacer predicciones mediante las funciones transform y combine. Estas funciones pueden convertir los datos leídos de almacenes de datos al formato requerido por classify.

El formato requerido de la salida del almacén de datos depende de la arquitectura de red.

Arquitectura de redSalida del almacén de datosEjemplo de salida
Entrada única

Tabla o arreglo de celdas, donde la primera columna especifica los predictores.

Los elementos de la tabla deben ser escalares, vectores fila o arreglos de celdas de 1 por 1 que contengan un arreglo numérico.

Los almacenes de datos personalizados deben producir tablas como salida.

data = read(ds)
data =

  4×1 table

        Predictors    
    __________________

    {224×224×3 double}
    {224×224×3 double}
    {224×224×3 double}
    {224×224×3 double}
data = read(ds)
data =

  4×1 cell array

    {224×224×3 double}
    {224×224×3 double}
    {224×224×3 double}
    {224×224×3 double}
Varias entradas

Arreglo de celdas con al menos numInputs columnas, donde numInputs es el número de entradas de red.

Las primeras numInputs columnas especifican los predictores de cada entrada.

El orden de las entradas se indica mediante la propiedad InputNames de la red.

data = read(ds)
data =

  4×2 cell array

    {224×224×3 double}    {128×128×3 double}
    {224×224×3 double}    {128×128×3 double}
    {224×224×3 double}    {128×128×3 double}
    {224×224×3 double}    {128×128×3 double}

El formato de los predictores depende del tipo de datos.

DatosFormato
Imágenes 2D

Arreglo numérico 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

Imágenes 3DArreglo numérico de h por w por d por c, donde h, w, d y c son la altura, la anchura, la profundidad y el número de canales de las imágenes, respectivamente

Para obtener más información, consulte Datastores for Deep Learning.

Arreglo numérico

Para datos que quepan en la memoria y no requieran procesamiento adicional, como aumento, puede especificar un conjunto de datos de imágenes como arreglo numérico.

El tamaño y la forma del arreglo numérico dependen del tipo de datos de imágenes.

DatosFormato
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 3DArreglo 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

Tabla

Como alternativa a los almacenes de datos o arreglos numéricos, también puede especificar imágenes en una tabla.

Cuando especifica imágenes en una tabla, cada fila de la tabla corresponde a una observación.

Para entradas de imagen, los predictores deben estar en la primera columna de la tabla, especificados como una de las siguientes opciones:

  • Ruta de archivo absoluta o relativa a una imagen, especificada como vector de caracteres.

  • Arreglo de celdas de 1 por 1 con un arreglo numérico de h por w por c que represente una imagen 2D, donde h, w y c corresponden a la altura, la anchura y el número de canales de la imagen, respectivamente.

Sugerencia

Este argumento admite predictores de valores complejos. Para introducir datos de valores complejos en un objeto SeriesNetwork o DAGNetwork, la opción SplitComplexInputs de la capa de entrada debe ser 1 (true).

Secuencia o datos de series de tiempo, especificados como una de las siguientes opciones:

Tipo de datosDescripciónEjemplo de uso
Almacén de datosTransformedDatastoreAlmacé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 activations.

  • 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

  • Hacer predicciones mediante redes con varias entradas.

  • Combinar predictores de diferentes fuentes de datos.

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

Hacer predicciones usando datos en un formato no compatible con otros almacenes de datos.

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

Arreglo numérico o de celdasUna única secuencia especificada como arreglo numérico o un conjunto de datos de secuencias especificado como arreglo de celdas de arreglos numéricosHacer predicciones usando datos que quepan en la memoria y no requieran procesamiento adicional, como transformaciones personalizadas.

Almacén de datos

Los almacenes de datos leen minilotes de secuencias y respuestas. Use almacenes de datos cuando tenga datos que no caben en la memoria o cuando quiera aplicar transformaciones a los datos.

Estos almacenes de datos son directamente compatibles con activations para datos secuenciales:

Puede utilizar otros almacenes de datos integrados para hacer predicciones mediante 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 activations. Por ejemplo, puede transformar y combinar datos leídos de arreglos en memoria y archivos CVS mediante un objeto ArrayDatastore y un objeto TabularTextDatastore, respectivamente.

El almacén de datos debe devolver datos en una tabla o arreglo de celdas. Los almacenes de datos de minilotes personalizados deben producir tablas como salida.

Salida del almacén de datosEjemplo de salida
Tabla
data = read(ds)
data =

  4×2 table

        Predictors    
    __________________

    {12×50 double}
    {12×50 double}
    {12×50 double}
    {12×50 double}
Arreglo de celdas
data = read(ds)
data =

  4×2 cell array

    {12×50 double}
    {12×50 double}
    {12×50 double}
    {12×50 double}

El formato de los predictores depende del tipo de datos.

DatosFormato de los predictores
Secuencia de vector

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

Secuencia de imágenes 1D

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

Cada secuencia del minilote debe tener la misma longitud de secuencia.

Secuencia de imágenes 2D

Arreglo 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 la imagen, respectivamente, y s es la longitud de la secuencia.

Cada secuencia del minilote debe tener la misma longitud de secuencia.

Secuencia de imágenes 3D

Arreglo 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 la imagen, respectivamente, y s es la longitud de la secuencia.

Cada secuencia del minilote debe tener la misma longitud de secuencia.

Para predictores devueltos en tablas, los elementos deben contener un escalar numérico, un vector fila numérico o un arreglo de celdas de 1 por 1 con un arreglo numérico.

Para obtener más información, consulte Datastores for Deep Learning.

Arreglo numérico o de celdas

Para datos que quepan en la memoria y no requieran procesamiento adicional, como transformaciones personalizadas, puede especificar una única secuencia como arreglo numérico o un conjunto de datos de secuencias como un arreglo de celdas de arreglos numéricos.

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, donde N es el número de observaciones. El tamaño y la forma del arreglo numérico que representa una secuencia depende del tipo de datos secuenciales.

EntradaDescripción
Secuencias de vectoresMatrices de c por s, donde c es el número de características de las secuencias y s es la longitud de la secuencia
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

Sugerencia

Este argumento admite predictores de valores complejos. Para introducir datos de valores complejos en un objeto SeriesNetwork o DAGNetwork, la opción SplitComplexInputs de la capa de entrada debe ser 1 (true).

Datos de características, especificados como una de las siguientes opciones:

Tipo de datosDescripciónEjemplo de uso
Almacén de datosTransformedDatastoreAlmacé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 activations.

  • 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

  • Hacer predicciones mediante redes con varias entradas.

  • Combinar predictores de diferentes fuentes de datos.

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

Hacer predicciones usando datos en un formato no compatible con otros almacenes de datos.

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

TablaDatos de características especificados como una tablaHacer predicciones usando datos guardados en una tabla.
Arreglo numéricoDatos de características especificados como un arreglo numéricoHacer predicciones usando datos que quepan en la memoria y no requieran procesamiento adicional, como transformaciones personalizadas.

Almacén de datos

Los almacenes de datos leen minilotes de datos de características y respuestas. Use almacenes de datos cuando tenga datos que no caben en la memoria o cuando quiera aplicar transformaciones a los datos.

Estos almacenes de datos son directamente compatibles con activations para datos de características:

Puede utilizar otros almacenes de datos integrados para hacer predicciones mediante 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 activations. Para obtener más información, consulte Datastores for Deep Learning.

Para redes con varias entradas, el almacén de datos debe ser un objeto TransformedDatastore o CombinedDatastore.

El almacén de datos debe devolver datos en una tabla o arreglo de celdas. Los almacenes de datos de minilotes personalizados deben producir tablas como salida. El formato de la salida del almacén de datos depende de la arquitectura de red.

Arquitectura de redSalida del almacén de datosEjemplo de salida
Capa de entrada única

Tabla o arreglo de celdas con al menos una columna, donde la primera columna especifica los predictores.

Los elementos de la tabla deben ser escalares, vectores fila o arreglos de celdas de 1 por 1 que contengan un arreglo numérico.

Los almacenes de datos de minilotes personalizados deben producir tablas como salida.

Tabla para red con una entrada:

data = read(ds)
data =

  4×2 table

        Predictors    
    __________________

    {24×1 double}
    {24×1 double}
    {24×1 double}
    {24×1 double}

Arreglo de celdas para red con una entrada:

data = read(ds)
data =

  4×1 cell array

    {24×1 double}
    {24×1 double}
    {24×1 double}
    {24×1 double}

Capas de entrada múltiples

Arreglo de celdas con al menos numInputs columnas, donde numInputs es el número de entradas de red.

Las primeras numInputs columnas especifican los predictores de cada entrada.

El orden de las entradas se indica mediante la propiedad InputNames de la red.

Arreglo de celdas para red con dos entradas:

data = read(ds)
data =

  4×3 cell array

    {24×1 double}    {28×1 double}
    {24×1 double}    {28×1 double}
    {24×1 double}    {28×1 double}
    {24×1 double}    {28×1 double}

Los predictores deben ser vectores columna de c por 1, donde c es el número de características.

Para obtener más información, consulte Datastores for Deep Learning.

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 y respuestas como una tabla.

Cada fila de la tabla corresponde a una observación. La disposición de los predictores en las columnas de la tabla depende del tipo de tarea.

TareaPredictores
Clasificación de características

Características especificadas en una o más columnas como escalares.

Arreglo numérico

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.

El arreglo numérico debe ser un arreglo numérico 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.

Sugerencia

Este argumento admite predictores de valores complejos. Para introducir datos de valores complejos en un objeto SeriesNetwork o DAGNetwork, la opción SplitComplexInputs de la capa de entrada debe ser 1 (true).

Arreglos numéricos o de celdas para redes con varias entradas.

Para entradas de predictor de imagen, secuencia y característica, el formato de los predictores debe coincidir con los formatos descritos en las descripciones de los argumentos images, sequences o features, respectivamente.

Para ver un ejemplo de cómo entrenar una red con varias entradas, consulte Entrenar una red con datos de características y de imagen.

Para introducir datos de valores complejos en un objeto DAGNetwork o SeriesNetwork, la opción SplitComplexInputs de la capa de entrada debe ser 1 (true).

Tipos de datos: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | cell
Soporte de números complejos:

Datos mezclados, especificados como una de las siguientes opciones:

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

  • Hacer predicciones mediante redes con varias entradas.

  • Transformar salidas de almacenes de datos no compatibles con activations 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

  • Hacer predicciones mediante redes con varias entradas.

  • Combinar predictores de diferentes fuentes de datos.

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

Hacer predicciones usando datos en un formato no compatible con otros almacenes de datos.

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

Puede utilizar otros almacenes de datos integrados para hacer predicciones mediante 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 activations. Para obtener más información, consulte Datastores for Deep Learning.

El almacén de datos debe devolver datos en una tabla o arreglo de celdas. Los almacenes de datos de minilotes personalizados deben producir tablas como salida. El formato de la salida del almacén de datos depende de la arquitectura de red.

Salida del almacén de datosEjemplo de salida

Arreglo de celdas con numInputs columnas, donde numInputs es el número de entradas de red.

El orden de las entradas se indica mediante la propiedad InputNames de la red.

data = read(ds)
data =

  4×3 cell array

    {24×1 double}    {28×1 double}
    {24×1 double}    {28×1 double}
    {24×1 double}    {28×1 double}
    {24×1 double}    {28×1 double}

Para entradas de predictor de imagen, secuencia y característica, el formato de los predictores debe coincidir con los formatos descritos en las descripciones de los argumentos images, sequences o features, respectivamente.

Para ver un ejemplo de cómo entrenar una red con varias entradas, consulte Entrenar una red con datos de características y de imagen.

Sugerencia

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

Capa de la que extraer activaciones, especificada como un índice numérico o un vector de caracteres.

Para calcular activaciones de un objeto SeriesNetwork, especifique la capa mediante su índice numérico o como un vector de caracteres correspondiente al nombre de la capa.

Para calcular activaciones de un objeto DAGNetwork, especifique la capa como el vector de caracteres correspondiente al nombre de la capa. Si la capa cuenta con varias salidas, especifique la capa y la salida como nombre de la capa, seguido por el carácter "/", seguido por el nombre de la salida de la capa. Es decir, layer tiene el formato 'layerName/outputName'.

Ejemplo: 3

Ejemplo: 'conv1'

Ejemplo: 'mpool/out'

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: MiniBatchSize=256 especifica el tamaño de minilote como 256.

Formato de las activaciones de salida, especificado como "channels", "rows" o "columns". Para ver descripciones de los formatos de salida, consulte act.

Para entradas de imagen, si la opción OutputAs es "channels", las imágenes de los datos de entrada pueden ser mayores que el tamaño de entrada de la capa de entrada de imagen de la red. Para otros formatos de salida, el tamaño de las imágenes de la entrada debe coincidir con el tamaño de entrada de la capa de entrada de imagen de la red.

Tamaño de los minilotes utilizados durante la predicción, especificado como un entero positivo. Un tamaño de minilote mayor requiere más memoria, pero puede proporcionar predicciones más rápidas.

Opción para rellenar, truncar o dividir secuencias, 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.

  • Entero positivo: para cada minilote, rellenar las secuencias hasta la longitud de la secuencia más larga del minilote y, después, dividir las secuencias en secuencias más pequeñas de la longitud especificada. Si se produce la división, el software crea minilotes adicionales. 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. Utilice esta opción si las secuencias completas no caben en la memoria. Como alternativa, intente reducir el número de secuencias por minilote ajustando la opción MiniBatchSize a un valor inferior.

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

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

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.

Optimización de rendimiento, especificada como una de las siguientes opciones:

  • "auto": aplicar automáticamente un número de optimizaciones adecuado para la red de entrada y los recursos de hardware.

  • "mex": compilar y ejecutar una función MEX. Esta opción solo está disponible cuando usa una GPU. Utilizar una GPU requiere una licencia de Parallel Computing Toolbox y un dispositivo GPU compatible. Para obtener información sobre los dispositivos compatibles, consulte GPU Computing Requirements (Parallel Computing Toolbox). Si no está disponible Parallel Computing Toolbox o una GPU adecuada, el software devuelve un error.

  • "none": deshabilitar toda la aceleración.

Si Acceleration es "auto", MATLAB® aplica un número de optimizaciones compatibles y no genera una función MEX.

Las opciones "auto" y "mex" pueden ofrecer beneficios de rendimiento a costa de un mayor tiempo de ejecución inicial. Las siguientes llamadas con parámetros compatibles son más rápidas. Utilice la optimización de rendimiento cuando planee llamar a la función varias veces con nuevos datos de entrada.

La opción "mex" genera y ejecuta una función MEX basada en la red y en parámetros utilizados en la llamada a la función. Puede tener varias funciones MEX asociadas a una única red al mismo tiempo. Borrando la variable de red también se borra cualquier función MEX asociada a esa red.

La opción "mex" es compatible con redes que contienen las capas que aparecen en la página Supported Layers (GPU Coder), excepto los objetos sequenceInputLayer.

La opción "mex" está disponible cuando usa una única GPU.

Para usar la opción "mex", debe tener instalado un compilador C/C++ y el paquete de soporte GPU Coder™ Interface for Deep Learning. Instale el paquete de soporte usando Add-On Explorer en MATLAB. Para obtener instrucciones de configuración, consulte MEX Setup (GPU Coder). No se requiere GPU Coder.

Para las redes cuantificadas, la opción "mex" requiere una GPU NVIDIA® habilitada para CUDA® con capacidad de cálculo 6.1, 6.3 o superior.

MATLAB Compiler™ no es compatible con el despliegue de redes cuando utiliza la opción "mex".

Recurso de hardware, especificado como una de las siguientes opciones:

  • "auto": usar una GPU si hay alguna disponible; si no, usar la CPU.

  • "gpu": usar la GPU. Utilizar una GPU requiere una licencia de Parallel Computing Toolbox y un dispositivo GPU compatible. Para obtener información sobre los dispositivos compatibles, consulte GPU Computing Requirements (Parallel Computing Toolbox). Si no está disponible Parallel Computing Toolbox o una GPU adecuada, el software devuelve un error.

  • "cpu": usar la CPU.

  • "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": usar un grupo paralelo local o remoto basado en su perfil de cluster predeterminado. 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 workers con una GPU única realizan el cálculo. Si el grupo no tiene varias GPU, en su lugar el cálculo se realiza en todos los workers de las CPU disponibles.

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.

Las opciones "gpu", "multi-gpu" y "parallel" 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 hacer predicciones en paralelo con redes con capas recurrentes (estableciendo ExecutionEnvironment en "multi-gpu" o "parallel"), la opción SequenceLength debe ser "shortest" o "longest".

Las redes con capas personalizadas que contienen parámetros State no son compatibles con hacer predicciones en paralelo.

Argumentos de salida

contraer todo

Activaciones desde la capa de red, devueltas como un arreglo numérico o un arreglo de celdas de arreglos numéricos. El formato de act depende del tipo de datos de entrada, del tipo de salida de la capa y de la opción OutputAs especificada.

Salida secuencial plegada o de imágenes

Si la capa produce como salida datos secuenciales plegados o de imágenes, act es un arreglo numérico.

OutputAsact
"channels"

Para salida de imágenes 2D, act es un arreglo de h por w por c por n, donde h, w y c son la altura, la anchura y el número de canales para la salida de la capa escogida, respectivamente, y n es el número de imágenes. En este caso, act(:,:,:,i) contiene las activaciones para la i-ésima imagen.

Para salida de imágenes 3D, act es un arreglo de h por w por d por c por n, donde h, w, d y c son la altura, la anchura, la profundidad y el número de canales para la salida de la capa escogida, respectivamente, y n es el número de imágenes. En este caso, act(:,:,:,:,i) contiene las activaciones para la i-ésima imagen.

Para salida secuencial plegada de imágenes 2D, act es un arreglo de h por w por c por (n*s), donde h, w y c son la altura, la anchura y el número de canales para la salida de la capa escogida, respectivamente, n es el número de secuencias, y s es la longitud de la secuencia. En este caso, act(:,:,:,(t-1)*n+k) contiene las activaciones para la unidad de tiempo t de la k-ésima secuencia.

Para salida secuencial plegada de imágenes 3D, act es un arreglo de h por w por d por c por (n*s), donde h, w, d y c son la altura, la anchura, la profundidad y el número de canales para la salida de la capa escogida, respectivamente, n es el número de secuencias, y s es la longitud de la secuencia. En este caso, act(:,:,:,:,(t-1)*n+k) contiene las activaciones para la unidad de tiempo t de la k-ésima secuencia.

"rows"

Para salida de imágenes 2D y 3D, act es una matriz de n por m, donde n es el número de imágenes y m es el número de elementos de salida de la capa. En este caso, act(i,:) contiene las activaciones para la i-ésima imagen.

Para salida secuencial plegada de imágenes 2D y 3D, act es una matriz de (n*s) por m, donde n es el número de secuencias, s es la longitud de la secuencia y m es el número de elementos de salida de la capa. En este caso, act((t-1)*n+k,:) contiene las activaciones para la unidad de tiempo t de la k-ésima secuencia.

"columns"

Para salida de imágenes 2D y 3D, act es una matriz de m por n, donde m es el número de elementos de salida de la capa escogida y n es el número de imágenes. En este caso, act(:,i) contiene las activaciones para la i-ésima imagen.

Para salida secuencial plegada de imágenes 2D y 3D, act es una matriz de m por (n*s), donde m es el número de elementos de salida de la capa escogida, n es el número de secuencias y s es la longitud de la secuencia. En este caso, act(:,(t-1)*n+k) contiene las activaciones para la unidad de tiempo t de la k-ésima secuencia.

Salida secuencial

Si layer tiene salida secuencial (por ejemplo, capas de LSTM con el modo de salida "sequence"), act es un arreglo de celdas. En este caso, la opción "OutputAs" debe ser "channels".

OutputAsact
"channels"

Para salida secuencial de vector, act es un arreglo de celdas de n por 1 de matrices de c por s, donde n es el número de secuencias, c es el número de características de la secuencia y s es la longitud de la secuencia.

Para salida secuencial de imágenes 2D, act es un arreglo de celdas de n por 1 de matrices de h por w por c por s, donde n es el número de secuencias, h, w y c son la altura, la anchura y el número de canales de las imágenes, respectivamente, y s es la longitud de la secuencia.

Para salida secuencial de imágenes 3D, act es un arreglo de celdas de n por 1 de matrices de h por w por c por d por s, donde n es el número de secuencias, h, w, d y c son la altura, la anchura, la profundidad y el número de canales de las imágenes, respectivamente, y s es la longitud de la secuencia.

En estos casos, act{i} contiene las activaciones de la i-ésima secuencia.

Salida de vector de características y unidad de tiempo única

Si layer produce como salida un vector de características o una unidad de tiempo única de una secuencia (por ejemplo, una capa de LSTM con el modo de salida "last"), act es un arreglo numérico.

OutputAsact
"channels"

Para un vector de características o una unidad de tiempo única que contiene datos de vector, act es una matriz de c por n, donde n es el número de observaciones y c es el número de características.

Para una unidad de tiempo única que contiene datos de imágenes 2D, act es un arreglo de h por w por c por n, donde n es el número de secuencias y h, w, y c son la altura, la anchura y el número de canales de las imágenes, respectivamente.

Para una unidad de tiempo única que contiene datos de imágenes 3D, act es un arreglo de h por w por c por d por n, donde n es el número de secuencias y h, w, d, y c son la altura, la anchura, la profundidad y el número de canales de las imágenes, respectivamente.

"rows"Matriz de n por m, donde n es el número de observaciones y m es el número de elementos de salida de la capa escogida. En este caso, act(i,:) contiene las activaciones para la i-ésima secuencia.
"columns"Matriz de m por n, donde m es el número de elementos de salida de la capa escogida y n es el número de observaciones. En este caso, act(:,i) contiene las activaciones para la i-ésima imagen.

Algoritmos

contraer todo

Aritmética de punto flotante

Cuando entrena una red neuronal mediante las funciones trainnet o trainNetwork o cuando usa las funciones de predicción o validación con objetos DAGNetwork y SeriesNetwork, el software realiza estos cálculos utilizando aritmética de precisión simple y de punto flotante. Las funciones para predicción y validación incluyen predict, classify y activations. El software utiliza aritmética de precisión simple cuando entrena redes neuronales usando tanto CPU como GPU.

Reproducibilidad

Para proporcionar el mejor rendimiento, no se garantiza que deep learning utilizando una GPU en MATLAB sea determinista. Según la arquitectura de su red, con ciertas condiciones puede obtener resultados diferentes al usar una GPU para entrenar dos redes idénticas o hacer dos predicciones utilizando la misma red y los mismos datos.

Capacidades ampliadas

Historial de versiones

Introducido en R2016a

expandir todo

R2024a: No recomendado

A partir de la versión R2024a, los objetos DAGNetwork y SeriesNetwork no están recomendados. En su lugar, utilice los objetos dlnetwork. Esta recomendación significa que la función activations tampoco está recomendada. Utilice la función predict en su lugar y especifique la opción Outputs.

No está previsto eliminar el soporte para los objetos DAGNetwork y SeriesNetwork. Sin embargo, en su lugar se recomiendan los objetos dlnetwork, que tienen estas ventajas:

  • Los objetos dlnetwork son un tipo de datos unificado que admite la creación de redes, la predicción, el entrenamiento integrado, la visualización, la compresión, la verificación y los bucles de entrenamiento personalizados.

  • Los objetos dlnetwork admiten una gama más amplia de arquitecturas de red que puede crear o importar desde plataformas externas.

  • La función trainnet admite objetos dlnetwork, lo que le permite especificar fácilmente funciones de pérdida. Puede seleccionar entre funciones de pérdida integradas o especificar una función de pérdida personalizada.

  • Entrenar y predecir con los objetos dlnetwork suele ser más rápido que los flujos de trabajo LayerGraph y trainNetwork.

Para convertir un objeto DAGNetwork o SeriesNetwork entrenado en un objeto dlnetwork, use la función dag2dlnetwork.

Esta tabla muestra un uso habitual de la función activations y cómo actualizar el código para usar los objetos dlnetwork en su lugar.

No recomendadoRecomendado
act = activations(net,X,layerName);
act = minibatchpredict(net,X,Outputs=layerName);