imageInputLayer
Capa de entrada de imagen
Descripción
Una capa de entrada de imagen introduce imágenes 2D en una red neuronal y aplica normalización de datos.
Para una entrada de imagen 3D, utilice image3dInputLayer.
Creación
Descripción
establece las propiedades opcionales usando uno o más argumentos nombre-valor.layer = imageInputLayer(inputSize,Name=Value)
Argumentos de entrada
Tamaño de los datos de entrada, especificado como un vector fila de enteros [h w c], donde h, w y c corresponden a la altura, la anchura y el número de canales de las imágenes, respectivamente.
Para imágenes en escala de grises, especifique un vector con
cigual a1.Para imágenes en RGB, especifique un vector con
cigual a3.Para imágenes multiespectrales o hiperespectrales, especifique un vector con
cigual al número de canales.
Para una entrada de volumen o imagen 3D, utilice image3dInputLayer.
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, utilice comas para separar cada nombre y valor, y encierre Name entre comillas.
Ejemplo: imageInputLayer([28 28 3],Name="input") crea una entrada de imagen con un tamaño de entrada [28 28 3] y nombre 'input'.
Normalización de datos para aplicar cada vez que los datos se propagan hacia adelante a través de la capa de entrada, especificada como una de las siguientes:
"zerocenter": restar la media especificada porMean."zscore": restar la media especificada porMeany dividir porStandardDeviation."rescale-symmetric": cambiar la escala de la entrada para que esté en el intervalo [-1, 1] empleando los valores mínimo y máximo especificados porMinyMax, respectivamente."rescale-zero-one": cambiar la escala de la entrada para que esté en el intervalo [0, 1] empleando los valores mínimo y máximo especificados porMinyMax, respectivamente."none": no normalizar los datos de entrada.Identificador de función: normalizar los datos empleando la función especificada. La función debe tener la forma
Y = f(X), dondeXes el dato de entrada y la salidaYes el dato normalizado.
Si los datos de entrada son de valores complejos y la opción SplitComplexInputs es 0 (false), la opción Normalization debe ser "zerocenter", "zscore", "none" o un identificador de función. (desde R2024a)
Antes de R2024a: Para introducir datos de valores complejos en la red, la opción SplitComplexInputs debe ser 1 (true).
Sugerencia
De forma predeterminada, el software calcula automáticamente las estadísticas de normalización cuando se utiliza la función trainnet. Para ahorrar tiempo durante el entrenamiento, especifique las estadísticas necesarias para la normalización y configure la opción ResetInputNormalization en trainingOptions como 0 (false).
El objeto ImageInputLayer almacena la propiedad Normalization como un vector de caracteres o un identificador de función.
Dimensión de normalización, especificada como una de las siguientes opciones:
"auto": si la opción de entrenamientoResetInputNormalizationes0(false) y especifica cualquiera de las estadísticas de normalización (Mean,StandardDeviation,MinoMax), normalice las dimensiones que coinciden con las estadísticas. De lo contrario, volver a calcular las estadísticas en el momento del entrenamiento y aplicar la normalización por canal."channel": normalización por canal."element": normalización por elemento."all": normalizar todos los valores utilizando estadísticas escalares.
El objeto ImageInputLayer almacena la propiedad NormalizationDimension como un vector de caracteres.
Media para normalización cero a centro y puntuación Z, especificada como un arreglo de h por w por c, un arreglo de medias de canal de 1 por 1 por c, un escalar numérico o [], donde h, w y c corresponden a la altura, la anchura y el número de canales de la media, respectivamente.
Para especificar la propiedad Mean, la propiedad Normalization debe ser "zerocenter" o "zscore". Si Mean es [], el software establece automáticamente la propiedad en el momento del entrenamiento o la inicialización:
La función
trainnetcalcula la media con los datos de entrenamiento y utiliza el valor resultante.La función
initializey la funcióndlnetworkcuando la opciónInitializees1(true) establecen la propiedad en0.
Mean puede ser de valores complejos. (desde R2024a) Si Mean es de valores complejos, la opción SplitComplexInputs debe ser 0 (false).
Antes de R2024a: Divida la media en partes reales e imaginarias y establezca la división de los datos de entrada en partes reales e imaginarias estableciendo la opción SplitComplexInputs en 1 (true).
Tipos de datos: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
Soporte de números complejos: Sí
Desviación estándar para normalización de puntuación Z, especificada como un arreglo de h por w por c, un arreglo de medias de canal de 1 por 1 por c, un escalar numérico o [], donde h, w y c corresponden a la altura, la anchura y el número de canales de la desviación estándar, respectivamente.
Para especificar la propiedad StandardDeviation, la propiedad Normalization debe ser "zscore". Si StandardDeviation es [], el software establece automáticamente la propiedad en el momento del entrenamiento o la inicialización:
La función
trainnetcalcula la desviación estándar con los datos de entrenamiento y utiliza el valor resultante.La función
initializey la funcióndlnetworkcuando la opciónInitializees1(true) establecen la propiedad en1.
StandardDeviation puede ser de valores complejos. (desde R2024a) Si StandardDeviation es de valores complejos, la opción SplitComplexInputs debe ser 0 (false).
Antes de R2024a: Divida la desviación estándar en partes reales e imaginarias y establezca la división de los datos de entrada en partes reales e imaginarias estableciendo la opción SplitComplexInputs en 1 (true).
Tipos de datos: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
Soporte de números complejos: Sí
Valor mínimo para reescalar, especificado como un arreglo de h por w por c, un arreglo de valores mínimos por canal de 1 por 1 por c, un escalar numérico o [], donde h, w y c corresponden a la altura, la anchura y el número de canales de los valores mínimos, respectivamente.
Para especificar la propiedad Min, la Normalization debe ser "rescale-symmetric" o "rescale-zero-one". Si Min es [], el software establece automáticamente la propiedad en el momento del entrenamiento o la inicialización:
La función
trainnetcalcula el valor mínimo con los datos de entrenamiento y utiliza el valor resultante.La función
initializey la funcióndlnetworkcuando la opciónInitializees1(true) establecen la propiedad en-1y0cuandoNormalizationes"rescale-symmetric"y"rescale-zero-one", respectivamente.
Tipos de datos: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
Valor máximo para reescalar, especificado como un arreglo de h por w por c, un arreglo de valores máximos por canal de 1 por 1 por c, un escalar numérico o [], donde h, w y c corresponden a la altura, la anchura y el número de canales de los valores máximos, respectivamente.
Para especificar la propiedad Max, la Normalization debe ser "rescale-symmetric" o "rescale-zero-one". Si Max es [], el software establece automáticamente la propiedad en el momento del entrenamiento o la inicialización:
La función
trainnetcalcula el valor máximo con los datos de entrenamiento y utiliza el valor resultante.La función
initializey la funcióndlnetworkcuando la opciónInitializees1(true) establecen la propiedad en1.
Tipos de datos: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
Marcador para dividir datos de entrada en componentes reales e imaginarios, especificado como uno de estos valores:
0(false): no dividir los datos de entrada.1(true): dividir los datos de entrada en componentes reales e imaginarios.
Cuando SplitComplexInputs es 1, entonces la capa produce el doble de canales que los datos de entrada que existen. Por ejemplo, si los datos de entrada tienen valores complejos con numChannels canales, entonces la capa produce datos con 2*numChannels canales, donde los canales 1 a numChannels contienen los componentes reales de los datos de entrada y los canales numChannels+1 a 2*numChannels contienen los componentes imaginarios de los datos de entrada. Si los datos de entrada son reales, entonces los canales numChannels+1 a 2*numChannels son todos cero.
Si los datos de entrada son de valores complejos y SplitComplexInputs es 0 (false), la capa pasa los datos de valores complejos a las siguientes capas. (desde R2024a)
Antes de R2024a: Para introducir datos de valores complejos en una red neuronal, la opción SplitComplexInputs de la capa de entrada debe ser 1 (true).
Para ver un ejemplo de cómo entrenar una red con datos con valores complejos, consulte Train Network with Complex-Valued Data.
Propiedades
Entrada de imagen
Esta propiedad o parámetro es de solo lectura.
Tamaño de los datos de entrada, especificado como un vector fila de enteros [h w c], donde h, w y c corresponden a la altura, la anchura y el número de canales de las imágenes, respectivamente.
Para imágenes en escala de grises, especifique un vector con
cigual a1.Para imágenes en RGB, especifique un vector con
cigual a3.Para imágenes multiespectrales o hiperespectrales, especifique un vector con
cigual al número de canales.
Para una entrada de volumen o imagen 3D, utilice image3dInputLayer.
Esta propiedad o parámetro es de solo lectura.
Normalización de datos para aplicar cada vez que los datos se propagan hacia adelante a través de la capa de entrada, especificada como una de las siguientes:
"zerocenter": restar la media especificada porMean."zscore": restar la media especificada porMeany dividir porStandardDeviation."rescale-symmetric": cambiar la escala de la entrada para que esté en el intervalo [-1, 1] empleando los valores mínimo y máximo especificados porMinyMax, respectivamente."rescale-zero-one": cambiar la escala de la entrada para que esté en el intervalo [0, 1] empleando los valores mínimo y máximo especificados porMinyMax, respectivamente."none": no normalizar los datos de entrada.Identificador de función: normalizar los datos empleando la función especificada. La función debe tener la forma
Y = f(X), dondeXes el dato de entrada y la salidaYes el dato normalizado.
Si los datos de entrada son de valores complejos y la opción SplitComplexInputs es 0 (false), la opción Normalization debe ser "zerocenter", "zscore", "none" o un identificador de función. (desde R2024a)
Antes de R2024a: Para introducir datos de valores complejos en la red, la opción SplitComplexInputs debe ser 1 (true).
Sugerencia
De forma predeterminada, el software calcula automáticamente las estadísticas de normalización cuando se utiliza la función trainnet. Para ahorrar tiempo durante el entrenamiento, especifique las estadísticas necesarias para la normalización y configure la opción ResetInputNormalization en trainingOptions como 0 (false).
El objeto ImageInputLayer almacena esta propiedad como un vector de caracteres o un identificador de función.
Dimensión de normalización, especificada como una de las siguientes opciones:
"auto": si la opción de entrenamientoResetInputNormalizationes0(false) y especifica cualquiera de las estadísticas de normalización (Mean,StandardDeviation,MinoMax), normalice las dimensiones que coinciden con las estadísticas. De lo contrario, volver a calcular las estadísticas en el momento del entrenamiento y aplicar la normalización por canal."channel": normalización por canal."element": normalización por elemento."all": normalizar todos los valores utilizando estadísticas escalares.
El objeto ImageInputLayer almacena esta propiedad como un vector de caracteres.
Media para normalización cero a centro y puntuación Z, especificada como un arreglo de h por w por c, un arreglo de medias de canal de 1 por 1 por c, un escalar numérico o [], donde h, w y c corresponden a la altura, la anchura y el número de canales de la media, respectivamente.
Para especificar la propiedad Mean, la propiedad Normalization debe ser "zerocenter" o "zscore". Si Mean es [], el software establece automáticamente la propiedad en el momento del entrenamiento o la inicialización:
La función
trainnetcalcula la media con los datos de entrenamiento y utiliza el valor resultante.La función
initializey la funcióndlnetworkcuando la opciónInitializees1(true) establecen la propiedad en0.
Mean puede ser de valores complejos. (desde R2024a) Si Mean es de valores complejos, la opción SplitComplexInputs debe ser 0 (false).
Antes de R2024a: Divida la media en partes reales e imaginarias y divida los datos de entrada en partes reales e imaginarias estableciendo la opción SplitComplexInputs en 1 (true).
Tipos de datos: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
Soporte de números complejos: Sí
Desviación estándar para normalización de puntuación Z, especificada como un arreglo de h por w por c, un arreglo de medias de canal de 1 por 1 por c, un escalar numérico o [], donde h, w y c corresponden a la altura, la anchura y el número de canales de la desviación estándar, respectivamente.
Para especificar la propiedad StandardDeviation, la propiedad Normalization debe ser "zscore". Si StandardDeviation es [], el software establece automáticamente la propiedad en el momento del entrenamiento o la inicialización:
La función
trainnetcalcula la desviación estándar con los datos de entrenamiento y utiliza el valor resultante.La función
initializey la funcióndlnetworkcuando la opciónInitializees1(true) establecen la propiedad en1.
StandardDeviation puede ser de valores complejos. (desde R2024a) Si StandardDeviation es de valores complejos, la opción SplitComplexInputs debe ser 0 (false).
Antes de R2024a: Divida la desviación estándar en partes reales e imaginarias y divida los datos de entrada en partes reales e imaginarias estableciendo la opción SplitComplexInputs en 1 (true).
Tipos de datos: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
Soporte de números complejos: Sí
Valor mínimo para reescalar, especificado como un arreglo de h por w por c, un arreglo de valores mínimos por canal de 1 por 1 por c, un escalar numérico o [], donde h, w y c corresponden a la altura, la anchura y el número de canales de los valores mínimos, respectivamente.
Para especificar la propiedad Min, la Normalization debe ser "rescale-symmetric" o "rescale-zero-one". Si Min es [], el software establece automáticamente la propiedad en el momento del entrenamiento o la inicialización:
La función
trainnetcalcula el valor mínimo con los datos de entrenamiento y utiliza el valor resultante.La función
initializey la funcióndlnetworkcuando la opciónInitializees1(true) establecen la propiedad en-1y0cuandoNormalizationes"rescale-symmetric"y"rescale-zero-one", respectivamente.
Tipos de datos: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
Valor máximo para reescalar, especificado como un arreglo de h por w por c, un arreglo de valores máximos por canal de 1 por 1 por c, un escalar numérico o [], donde h, w y c corresponden a la altura, la anchura y el número de canales de los valores máximos, respectivamente.
Para especificar la propiedad Max, la Normalization debe ser "rescale-symmetric" o "rescale-zero-one". Si Max es [], el software establece automáticamente la propiedad en el momento del entrenamiento o la inicialización:
La función
trainnetcalcula el valor máximo con los datos de entrenamiento y utiliza el valor resultante.La función
initializey la funcióndlnetworkcuando la opciónInitializees1(true) establecen la propiedad en1.
Tipos de datos: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
Esta propiedad o parámetro es de solo lectura.
Marcador para dividir datos de entrada en componentes reales e imaginarios, especificado como uno de estos valores:
0(false): no dividir los datos de entrada.1(true): dividir los datos de entrada en componentes reales e imaginarios.
Cuando SplitComplexInputs es 1, entonces la capa produce el doble de canales que los datos de entrada que existen. Por ejemplo, si los datos de entrada tienen valores complejos con numChannels canales, entonces la capa produce datos con 2*numChannels canales, donde los canales 1 a numChannels contienen los componentes reales de los datos de entrada y los canales numChannels+1 a 2*numChannels contienen los componentes imaginarios de los datos de entrada. Si los datos de entrada son reales, entonces los canales numChannels+1 a 2*numChannels son todos cero.
Si los datos de entrada son de valores complejos y SplitComplexInputs es 0 (false), la capa pasa los datos de valores complejos a las siguientes capas. (desde R2024a)
Antes de R2024a: Para introducir datos de valores complejos en una red neuronal, la opción SplitComplexInputs de la capa de entrada debe ser 1 (true).
Para ver un ejemplo de cómo entrenar una red con datos con valores complejos, consulte Train Network with Complex-Valued Data.
Capa
Nombre de la capa, especificado como un vector de caracteres o un escalar de cadena. Para entradas en forma de arreglo Layer, las funciones trainnet y dlnetwork asignan automáticamente nombres a las capas sin nombre.
El objeto ImageInputLayer almacena esta propiedad como un vector de caracteres.
Tipos de datos: char | string
Esta propiedad o parámetro es de solo lectura.
Número de entradas de la capa. La capa no tiene entradas.
Tipos de datos: double
Esta propiedad o parámetro es de solo lectura.
Nombres de las entradas de la capa. La capa no tiene entradas.
Tipos de datos: cell
Esta propiedad o parámetro es de solo lectura.
Número de salidas de la capa, almacenado como 1. Esta capa solo tiene una salida.
Tipos de datos: double
Esta propiedad o parámetro es de solo lectura.
Nombres de salida, almacenados como {'out'}. Esta capa solo tiene una salida.
Tipos de datos: cell
Ejemplos
Cree una capa de entrada de imagen para imágenes en color de 28 por 28.
inputlayer = imageInputLayer([28 28 3])
inputlayer =
ImageInputLayer with properties:
Name: ''
InputSize: [28 28 3]
SplitComplexInputs: 0
Hyperparameters
DataAugmentation: 'none'
Normalization: 'zerocenter'
NormalizationDimension: 'auto'
Mean: []
Incluya una capa de entrada de imagen en un arreglo Layer.
layers = [
imageInputLayer([28 28 1])
convolution2dLayer(5,20)
reluLayer
maxPooling2dLayer(2,Stride=2)
fullyConnectedLayer(10)
softmaxLayer]layers =
6×1 Layer array with layers:
1 '' Image Input 28×28×1 images with 'zerocenter' normalization
2 '' 2-D Convolution 20 5×5 convolutions with stride [1 1] and padding [0 0 0 0]
3 '' ReLU ReLU
4 '' 2-D Max Pooling 2×2 max pooling with stride [2 2] and padding [0 0 0 0]
5 '' Fully Connected 10 fully connected layer
6 '' Softmax softmax
Algoritmos
Las capas en un arreglo de capas o en una gráfica de capas pasan datos a las capas posteriores como objetos dlarray con formato. El formato de un objeto dlarray es una cadena de caracteres, en la que cada carácter describe la dimensión correspondiente de los datos. El formato consta de uno o más de estos caracteres:
"S": espacial"C": canal"B": lote"T": tiempo"U": sin especificar
Por ejemplo, puede describir los datos de imagen 2D que están representados como arreglo 4D, donde las dos primeras dimensiones corresponden a las dimensiones espaciales de las imágenes, la tercera dimensión corresponde a los canales de las imágenes y la cuarta dimensión corresponde a la dimensión de lote, como datos con formato "SSCB" (espacial, espacial, canal, lote).
La capa de entrada de una red especifica la distribución de los datos que espera la red. Si tiene datos dispuestos de otra manera, especifique la distribución usando la opción de entrenamiento InputDataFormats.
La capa introduce arreglos de h por w por c por N en la red, donde h, w y c son la altura, el ancho 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).
Para entradas de valores complejos a la red neuronal, cuando el argumento SplitComplexIputs es 0 (false), la capa pasa datos de valores complejos a las capas posteriores. (desde R2024a)
Antes de R2024a: Para introducir datos de valores complejos en una red neuronal, la opción SplitComplexInputs de la capa de entrada debe ser 1 (true).
Si los datos de entrada son de valores complejos y la opción SplitComplexInputs es 0 (false), la opción Normalization debe ser "zerocenter", "zscore", "none" o un identificador de función. Las propiedades Mean y StandardDeviation de la capa también admiten datos de valores complejos para las opciones de normalización "zerocenter" y "zscore".
Para ver un ejemplo de cómo entrenar una red con datos con valores complejos, consulte Train Network with Complex-Valued Data.
Referencias
[1] Krizhevsky, Alex, Ilya Sutskever, and Geoffrey E. Hinton. "ImageNet Classification with Deep Convolutional Neural Networks." Communications of the ACM 60, no. 6 (May 24, 2017): 84–90. https://doi.org/10.1145/3065386.
[2] Cireşan, D., U. Meier, J. Schmidhuber. "Multi-column Deep Neural Networks for Image Classification". IEEE Conference on Computer Vision and Pattern Recognition, 2012.
Capacidades ampliadas
Notas y limitaciones de uso:
La generación de código no permite pasar objetos
dlarraycon dimensiones (U) sin especificar a esta capa.La generación de código no admite el tipo de datos
Normalizationespecificado usando un identificador de función.La generación de código no admite la entrada compleja ni la opción
SplitComplexInputs.
Consulte las notas de uso y las limitaciones de la sección Generación de código C/C++. Las mismas limitaciones se aplican a la generación de código GPU.
Historial de versiones
Introducido en R2016aPara entradas de valores complejos a la red neuronal, cuando el argumento SplitComplexIputs es 0 (false), la capa pasa datos de valores complejos a las capas posteriores.
Si los datos de entrada son de valores complejos y la opción SplitComplexInputs es 0 (false), la opción Normalization debe ser "zerocenter", "zscore", "none" o un identificador de función. Las propiedades Mean y StandardDeviation de la capa también admiten datos de valores complejos para las opciones de normalización "zerocenter" y "zscore".
AverageImage se eliminará. En su lugar, use Mean. Para actualizar el código, reemplace todas las instancias de AverageImage con Mean. No existen diferencias entre las propiedades que requieren actualizaciones adicionales en su código.
A partir de la versión R2019b, imageInputLayer y image3dInputLayer, de forma predeterminada, usan normalización por canal. En versiones anteriores, estas capas usan normalización por elemento. Para reproducir este comportamiento, establezca la opción NormalizationDimension de estas capas en 'element'.
No se recomienda el uso de la propiedad DataAugmentation. Para preprocesar imágenes con recorte, reflexión y otras transformaciones geométricas, utilice augmentedImageDatastore en su lugar.
Consulte también
trainnet | trainingOptions | dlnetwork | convolution2dLayer | fullyConnectedLayer | maxPooling2dLayer | augmentedImageDatastore | image3dInputLayer | Deep Network Designer | featureInputLayer | exportNetworkToSimulink | Rescale-Symmetric 2D | Rescale-Zero-One 2D | Zerocenter 2D | Zscore 2D
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Seleccione un país/idioma
Seleccione un país/idioma para obtener contenido traducido, si está disponible, y ver eventos y ofertas de productos y servicios locales. Según su ubicación geográfica, recomendamos que seleccione: .
También puede seleccionar uno de estos países/idiomas:
Cómo obtener el mejor rendimiento
Seleccione China (en idioma chino o inglés) para obtener el mejor rendimiento. Los sitios web de otros países no están optimizados para ser accedidos desde su ubicación geográfica.
América
- América Latina (Español)
- Canada (English)
- United States (English)
Europa
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)