classificationLayer
(No recomendado) Capa de clasificación de salida
No se recomienda el uso de classificationLayer
. En su lugar, utilice la función trainnet
y establezca la función de pérdida en "crossentropy"
. Para obtener más información, consulte Historial de versiones.
Descripción
Una capa de clasificación calcula la pérdida de entropía cruzada de las tareas de clasificación y clasificación ponderada con clases mutuamente excluyentes.
La capa infiere el número de clases a partir del tamaño de salida de la capa anterior. Por ejemplo, para especificar el número de clases K de la red, puede incluir una capa totalmente conectada con el tamaño de salida K y una capa softmax antes de la capa de clasificación.
establece las propiedades opcionales layer
= classificationLayer(Name,Value
)Name
, ClassWeights
y Classes
usando uno o más pares nombre-valor. Por ejemplo, classificationLayer('Name','output')
crea una capa de clasificación con el nombre 'output'
.
Ejemplos
Crear una capa de clasificación
Cree una capa de clasificación.
Cree una capa de clasificación con el nombre 'output'
.
layer = classificationLayer('Name','output')
layer = ClassificationOutputLayer with properties: Name: 'output' Classes: 'auto' ClassWeights: 'none' OutputSize: 'auto' Hyperparameters LossFunction: 'crossentropyex'
Incluya una capa de clasificación de salida en un arreglo Layer
.
layers = [ ... imageInputLayer([28 28 1]) convolution2dLayer(5,20) reluLayer maxPooling2dLayer(2,'Stride',2) fullyConnectedLayer(10) softmaxLayer classificationLayer]
layers = 7x1 Layer array with layers: 1 '' Image Input 28x28x1 images with 'zerocenter' normalization 2 '' 2-D Convolution 20 5x5 convolutions with stride [1 1] and padding [0 0 0 0] 3 '' ReLU ReLU 4 '' 2-D Max Pooling 2x2 max pooling with stride [2 2] and padding [0 0 0 0] 5 '' Fully Connected 10 fully connected layer 6 '' Softmax softmax 7 '' Classification Output crossentropyex
Argumentos de entrada
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: classificationLayer('Name','output')
crea una capa de clasificación con el nombre 'output'
.
Name
— Nombre de la capa
""
(predeterminado) | vector de caracteres | escalar de cadena
Nombre de la capa, especificado como un vector de caracteres o un escalar de cadena. Para entradas en forma de arreglo Layer
, la función trainNetwork
asigna automáticamente nombres a las capas con el nombre ""
.
El objeto ClassificationOutputLayer
almacena esta propiedad como un vector de caracteres.
Tipos de datos: char
| string
ClassWeights
— Pesos de clase de la pérdida de entropía cruzada ponderada
'none'
(predeterminado) | vector de números positivos
Pesos de clase de la pérdida de entropía cruzada ponderada, especificados como un vector de números positivos o 'none'
.
Cada elemento de los pesos de clase del vector representa el peso de la clase correspondiente en la propiedad Classes
. Para especificar un vector de pesos de clase, debe especificar también las clases con la opción Classes
.
Si la propiedad ClassWeights
es 'none'
, la capa aplica la pérdida de entropía cruzada no ponderada.
Classes
— Clases de la capa de salida
"auto"
(predeterminado) | vector categórico | arreglo de cadena | arreglo de celdas de vectores de caracteres
Clases de la capa de salida, especificadas como un vector categórico, un arreglo de cadenas, un arreglo de celdas de vectores de caracteres o "auto"
. Si Classes
es "auto"
, el software establece automáticamente las clases en el momento del entrenamiento. Si especifica el arreglo de cadenas o el arreglo de celdas de vectores de caracteres str
, el software establece las clases de la capa de salida en categorical(str,str)
.
Tipos de datos: char
| categorical
| string
| cell
Argumentos de salida
layer
— Capa de clasificación
objeto ClassificationOutputLayer
Capa de clasificación, devuelta como un objeto ClassificationOutputLayer
.
Para obtener información sobre cómo concatenar capas para crear una arquitectura de red neuronal convolucional, consulte Layer
.
Más acerca de
Capa de clasificación
Una capa de clasificación calcula la pérdida de entropía cruzada de las tareas de clasificación y clasificación ponderada con clases mutuamente excluyentes.
Normalmente, la capa de clasificación suele ir precedida de una capa softmax en las redes de clasificación. En la capa de clasificación, trainNetwork
toma los valores de la función softmax y asigna cada entrada a una de las clases mutuamente excluyentes K usando la función de entropía cruzada para un esquema de codificación de 1 de K [1]:
donde N es el número de muestras, K es el número de clases, wi es el peso de la clase i, tni es el indicador de que la muestra n pertenece a la clase i, e yni es la salida de la muestra n para la clase i, que en este caso es el valor de la función softmax. En otras palabras, yni es la probabilidad de que la red asocie la observación n a la clase i.
Referencias
[1] Bishop, C. M. Pattern Recognition and Machine Learning. Springer, New York, NY, 2006.
Capacidades ampliadas
Generación de código C/C++
Genere código C y C++ mediante MATLAB® Coder™.
Notas y limitaciones de uso:
El generador de código representa caracteres en código ASCII de 8 bits que determina la configuración regional. Por lo tanto, el uso de caracteres en código distinto de ASCII en nombres de clases, nombres de capas, descripciones de capas o nombres de redes podría dar lugar a errores. Para obtener más información, consulte Encoding of Characters in Code Generation (MATLAB Coder).
Generación de código de GPU
Genere código CUDA® para GPU NVIDIA® mediante GPU Coder™.
Notas y limitaciones de uso:
Para generar código CUDA® o C++ mediante GPU Coder™, primero tiene que construir y entrenar una red neuronal profunda. Una vez se haya entrenado y evaluado la red, puede configurar el generador de código para que genere código y despliegue la red neuronal convolucional en plataformas que usen procesadores GPU NVIDIA® o ARM®. Para obtener más información, consulte Deep Learning with GPU Coder (GPU Coder).
Para esta capa, puede generar código que aproveche la biblioteca de la red neuronal profunda (cuDNN) NVIDIACUDA, la biblioteca de inferencias de alto rendimiento NVIDIATensorRT™ o la
Compute Library
ARM para la GPU Mali.El generador de código representa caracteres en código ASCII de 8 bits que determina la configuración regional. Por lo tanto, el uso de caracteres en código distinto de ASCII en nombres de clases, nombres de capas, descripciones de capas o nombres de redes podría dar lugar a errores. Para obtener más información, consulte Encoding of Characters in Code Generation (MATLAB Coder).
Historial de versiones
Introducido en R2016aR2024a: No recomendado
A partir de la versión R2024a, los objetos ClassificationOutputLayer
no están recomendados. En su lugar, utilice trainnet
y establezca la función de pérdida en "crossentropy"
.
No está previsto eliminar el soporte para los objetos ClassificationOutputLayer
. Sin embargo, en su lugar se recomienda la función trainnet
, que tiene estas ventajas:
trainnet
admite los objetosdlnetwork
, que admiten una gama más amplia de arquitecturas de red que puede crear o importar desde plataformas externas.trainnet
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.trainnet
produce como salida un objetodlnetwork
, que es 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.trainnet
suele ser más rápida quetrainNetwork
.
Esta tabla muestra algunos usos habituales de la función trainNetwork
con los objetos ClassificationOutputLayer
y cómo actualizar el código para usar la función trainnet
en su lugar.
No recomendado | Recomendado |
---|---|
net = trainNetwork(data,layers,options) , donde layers contiene un objeto ClassificationOutputLayer . | net = trainnet(data,layers,"crossentropy",options); layers especifica la misma red sin un objeto ClassificationOutputLayer . |
net = trainNetwork(data,layers,options) , donde layers contiene un objeto ClassificationOutputLayer con ClassWeights establecido como un vector numérico. | lossFcn = @(Y,T) crossentropy(Y,T,Weights=weights);
net = trainnet(data,layers,"crossentropy",options); weights especifica los pesos de clase y layers especifica la misma red sin un objeto ClassificationOutputLayer . |
Comando de MATLAB
Ha hecho clic en un enlace que corresponde a este comando de MATLAB:
Ejecute el comando introduciéndolo en la ventana de comandos de MATLAB. Los navegadores web no admiten comandos de MATLAB.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- 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)