Main Content

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.

classificationLayer

Capa de clasificación de salida

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.

layer = classificationLayer crea una capa de clasificación.

ejemplo

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

Cree una capa de clasificación ponderada para tres clases con los nombres "cat", "dog" y "fish", con los pesos 0.7, 0.2 y 0.1, respectivamente.

classes = ["cat" "dog" "fish"];
classWeights = [0.7 0.2 0.1];

layer = classificationLayer( ...
    'Classes',classes, ...
    'ClassWeights',classWeights)
layer = 
  ClassificationOutputLayer with properties:

            Name: ''
         Classes: [cat    dog    fish]
    ClassWeights: [3x1 double]
      OutputSize: 3

   Hyperparameters
    LossFunction: 'crossentropyex'

Incluya una capa de clasificación de salida ponderada en un arreglo de capas.

numClasses = numel(classes);

layers = [ ...
    imageInputLayer([28 28 1])
    convolution2dLayer(5,20)
    reluLayer
    maxPooling2dLayer(2,'Stride',2)
    fullyConnectedLayer(numClasses)
    softmaxLayer
    classificationLayer('Classes',classes,'ClassWeights',classWeights)]
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         3 fully connected layer
     6   ''   Softmax                 softmax
     7   ''   Classification Output   Class weighted crossentropyex with 'cat' and 2 other classes

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, las funciones trainNetwork, assembleNetwork, layerGraph y dlnetwork asignan automáticamente nombres a las capas con el nombre ''.

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

, en el que 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 n-ésima muestra pertenece a la i-ésima clase, y 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 entrada número n con 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™.

Generación de código de GPU
Genere código CUDA® para GPU NVIDIA® mediante GPU Coder™.

Historial de versiones

Introducido en R2016a