Main Content

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.

ejemplo

layer = classificationLayer crea una capa de clasificación.

layer = classificationLayer(Name,Value) establece las propiedades opcionales 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

contraer todo

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

contraer todo

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

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

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.

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

contraer todo

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

contraer todo

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]:

loss=1Nn=1Ni=1Kwitnilnyni,

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

Historial de versiones

Introducido en R2016a

contraer todo

R2024a: 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 objetos dlnetwork, 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 objeto dlnetwork, 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 que trainNetwork.

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 recomendadoRecomendado
net = trainNetwork(data,layers,options), donde layers contiene un objeto ClassificationOutputLayer.

net = trainnet(data,layers,"crossentropy",options);
En este ejemplo, 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);
En este ejemplo, weights especifica los pesos de clase y layers especifica la misma red sin un objeto ClassificationOutputLayer.