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.

predict

Calcular salidas de redes de deep learning para inferencias

Descripción

Algunas capas de deep learning se comportan de forma diferente durante el entrenamiento y la inferencia (predicción). Por ejemplo, durante el entrenamiento, las capas de abandono establecen elementos en cero de forma aleatoria para ayudar a evitar el sobreajuste, pero, durante la inferencia, las capas de abandono no cambian la entrada.

Y = predict(net,X) devuelve la salida de red Y durante la inferencia dados los datos X y la red net que tiene una única entrada y una única salida.

ejemplo

Y = predict(net,X1,...,XM) devuelve la salida de red Y durante la inferencia dadas las M entradas X1, ...,XM y la red net que tiene M entradas y una única salida.

[Y1,...,YN] = predict(___) devuelve las N salidas Y1, …, YN durante la inferencia para redes que tienen N salidas que usan cualquiera de las sintaxis anteriores.

[Y1,...,YK] = predict(___,Outputs=layerNames) devuelve las salidas Y1, …, YK durante la inferencia para las capas especificadas que usan cualquiera de las sintaxis anteriores.

[___] = predict(___,Name=Value) especifica opciones adicionales con uno o más argumentos nombre-valor.

[___,state] = predict(___) también devuelve el estado de red actualizado.

Ejemplos

contraer todo

Cargue una red neuronal SqueezeNet preentrenada en el área de trabajo.

[net,classNames] = imagePretrainedNetwork;

Lea una imagen de un archivo PNG y clasifíquela. Para clasificar la imagen, primero conviértala al tipo de datos single.

im = imread("peppers.png");
figure
imshow(im)

Figure contains an axes object. The hidden axes object contains an object of type image.

X = single(im);
scores = predict(net,X);
[label,score] = scores2label(scores,classNames);

Muestre la imagen con la etiqueta predicha y la puntuación correspondiente.

figure
imshow(im)
title(string(label) + " (Score: " + score + ")")

Figure contains an axes object. The hidden axes object with title bell pepper (Score: 0.89394) contains an object of type image.

Argumentos de entrada

contraer todo

Este argumento puede representar cualquiera de estas opciones:

  • Red para bucles de entrenamiento personalizados, especificada como un objeto dlnetwork.

  • Red para bucles de poda personalizados, especificada como un objeto TaylorPrunableNetwork.

Para podar una red neuronal profunda, se requiere el paquete de soporte Deep Learning Toolbox™ Model Quantization Library. Este paquete es un complemento gratuito que puede descargarse a través de Add-On Explorer. Como alternativa, consulte Deep Learning Toolbox Model Quantization Library.

Datos de entrada, especificados como uno de estos valores:

  • Arreglo numérico (desde R2023b)

  • objeto dlarray (desde R2023b)

  • Objeto dlarray con formato

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 los datos tienen una disposición diferente de lo que espera la red, indique que los datos tienen una disposición diferente usando la opción InputDataFormats o especificando los datos de entrada como un objeto dlarray con formato. Normalmente es más sencillo ajustar la opción de entrenamiento InputDataFormats que preprocesar los datos de entrada.

Para redes neuronales que no tengan capas de entrada, debe utilizar la opción InputDataFormats o usar objetos dlarray con formato.

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

Capas de las que extraer salidas, especificadas como un arreglo de cadenas o un arreglo de celdas de vectores de caracteres que contienen los nombres de las capas.

  • Si layerNames(i) corresponde a una capa con una única salida, layerNames(i) es el nombre de la capa.

  • Si layerNames(i) corresponde a una capa con varias salidas, layerNames(i) es el nombre de la capa seguido por el carácter / y el nombre de la salida de la capa: "layerName/outputName".

Argumentos de par nombre-valor

contraer todo

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, utilice comas para separar cada nombre y valor, y encierre Name entre comillas.

Ejemplo: Y = predict(net,X,InputDataFormats="CBT") hace predicciones con datos de secuencias que tienen el formato "CBT" (canal, lote, tiempo).

Desde R2023b

Descripción de las dimensiones de los datos de entrada, especificada como un arreglo de cadenas, un vector de caracteres o un arreglo de celdas de vectores de caracteres.

Si InputDataFormats es "auto", el software usa los formatos esperados por la entrada de red. De lo contrario, el software usa los formatos especificados para la entrada de red correspondiente.

Un formato de datos es una cadena de caracteres, en la que cada carácter describe el tipo de la dimensión de datos correspondiente.

Los caracteres son los siguientes:

  • "S": espacial

  • "C": canal

  • "B": lote

  • "T": tiempo

  • "U": sin especificar

Por ejemplo, considere un arreglo que contiene un lote de secuencias, donde la primera, la segunda y la tercera dimensión corresponden a canales, observaciones y unidades de tiempo, respectivamente. Puede especificar que este arreglo tenga el formato "CBT" (canal, lote, tiempo).

Puede especificar varias dimensiones etiquetadas "S" o "U". Puede utilizar las etiquetas "C", "B" y "T" como máximo una vez cada una. El software ignora las dimensiones únicas "U" restantes tras la segunda dimensión.

Para redes neuronales con varias entradas net, especifique un arreglo de formatos de datos de entrada, donde InputDataFormats(i) corresponde a la entrada net.InputNames(i).

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

Tipos de datos: char | string | cell

Desde R2023b

Descripción de las dimensiones de los datos de salida, especificada como uno de estos valores:

  • "auto": si los datos de salida contienen el mismo número de dimensiones que los de entrada, la función predict usa el formato especificado por InputDataFormats. Si los datos de salida contienen un número de dimensiones distinto que los de entrada, la función predict permuta automáticamente las dimensiones de los datos de salida para que sean coherentes con las capas de entrada de la red, la opción InputDataFormats o los objetivos esperados por la función trainnet.

  • Formatos de los datos, especificados como un arreglo de cadenas, un vector de caracteres o un arreglo de celdas de vectores de caracteres: la función predict usa los formatos de datos especificados.

Un formato de datos es una cadena de caracteres, en la que cada carácter describe el tipo de la dimensión de datos correspondiente.

Los caracteres son los siguientes:

  • "S": espacial

  • "C": canal

  • "B": lote

  • "T": tiempo

  • "U": sin especificar

Por ejemplo, considere un arreglo que contiene un lote de secuencias, donde la primera, la segunda y la tercera dimensión corresponden a canales, observaciones y unidades de tiempo, respectivamente. Puede especificar que este arreglo tenga el formato "CBT" (canal, lote, tiempo).

Puede especificar varias dimensiones etiquetadas "S" o "U". Puede utilizar las etiquetas "C", "B" y "T" como máximo una vez cada una. El software ignora las dimensiones únicas "U" restantes tras la segunda dimensión.

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

Tipos de datos: char | string | cell

Optimización del rendimiento, especificada como uno de estos valores:

  • "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 se usa una GPU. Debe almacenar los datos de entrada o los parámetros que se pueden aprender de la red como objetos gpuArray. Utilizar una GPU requiere 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.

Cuando usa la opción "auto" o "mex", el software puede ofrecer beneficios de rendimiento a costa de un mayor tiempo de ejecución inicial. Las siguientes llamadas a la función suelen ser más rápidas. Utilice la optimización de rendimiento cuando llame a la función varias veces con distintos datos de entrada.

Cuando Acceleration es "mex", el software genera y ejecuta una función MEX basada en el modelo y en los parámetros que especifica en la llamada a la función. Un único modelo puede tener varias funciones MEX asociadas al mismo tiempo. Borrar la variable de modelo también borra cualquier función MEX asociada a ese modelo.

Cuando Acceleration es "auto", el software no genera una función MEX.

La opción "mex" solo está disponible cuando usa una GPU. 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 Set Up Compiler (GPU Coder). No se requiere GPU Coder.

La opción "mex" tiene estas limitaciones:

  • El argumento de salida state no es compatible.

  • Solo es compatible la precisión single. Los datos de entrada o los parámetros que se pueden aprender deben tener el tipo subyacente single.

  • Las redes con entradas que no están conectadas a una capa de entrada no son compatibles.

  • Los objetos dlarray rastreados no son compatibles. Esto significa que la opción "mex" no es compatible dentro de una llamada a dlfeval.

  • No todas las capas son compatibles. Para obtener una lista de capas compatibles, consulte Supported Layers (GPU Coder).

  • MATLAB Compiler™ no admite el despliegue de la red cuando se utiliza la opción "mex".

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.

Argumentos de salida

contraer todo

Datos de salida, devueltos como uno de estos valores:

  • Arreglo numérico (desde R2023b)

  • Objeto dlarray sin formato (desde R2023b)

  • Objeto dlarray con formato

El tipo de datos coincide con el tipo de datos de los datos de entrada.

Estado de la red actualizado, devuelto como tabla.

El estado de la red es una tabla con tres columnas:

  • Layer: nombre de la capa, especificado como un escalar de cadena.

  • Parameter: nombre del parámetro de estado, especificado como un escalar de cadena.

  • Value: valor del parámetro de estado, especificado como un objeto dlarray.

Los estados de capa contienen información calculada durante la operación de capa que se conservará para su uso en posteriores pases hacia delante de la capa. Un ejemplo sería el estado de las celdas y el estado oculto de las capas LSTM, o las estadísticas de ejecución en las capas de normalización de lotes.

Para capas recurrentes, como las capas LSTM, con la propiedad HasStateInputs establecida en 1 (true), la tabla de estados no contiene entradas para los estados de esa capa.

Actualice el estado de un objeto dlnetwork usando la propiedad State.

Algoritmos

contraer todo

Capacidades ampliadas

expandir todo

Historial de versiones

Introducido en R2019b

expandir todo