classificationLayer

Слой классификации

Описание

Слой классификации вычисляет потерю перекрестной энтропии для классификации и взвешенных задач классификации со взаимоисключающими классами.

Слой выводит количество классов от выходного размера предыдущего слоя. Например, чтобы задать количество классов K сети, можно включать полносвязный слой с выходным размером K и softmax слой перед слоем классификации.

layer = classificationLayer создает слой классификации.

пример

layer = classificationLayer(Name,Value) устанавливает дополнительный Name, ClassWeights, и Classes свойства с помощью одной или нескольких пар "имя-значение". Например, classificationLayer('Name','output') создает слой классификации с именем 'output'.

Примеры

свернуть все

Создайте слой классификации с именем 'output'.

layer = classificationLayer('Name','output')
layer = 
  ClassificationOutputLayer with properties:

            Name: 'output'
         Classes: 'auto'
    ClassWeights: 'none'
      OutputSize: 'auto'

   Hyperparameters
    LossFunction: 'crossentropyex'

Включайте классификацию выходной слой в 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   ''   Convolution             20 5x5 convolutions with stride [1  1] and padding [0  0  0  0]
     3   ''   ReLU                    ReLU
     4   ''   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

Создайте взвешенный слой классификации для трех классов с именами "кошка", "собака" и "рыба", с весами 0.7, 0.2, и 0.1, соответственно.

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'

Включайте взвешенную классификацию выходной слой в массив Слоя.

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   ''   Convolution             20 5x5 convolutions with stride [1  1] and padding [0  0  0  0]
     3   ''   ReLU                    ReLU
     4   ''   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

Входные параметры

свернуть все

Аргументы name-value

Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: classificationLayer('Name','output') создает слой классификации с именем 'output'

Имя слоя в виде вектора символов или строкового скаляра. Для Layer вход массивов, trainNetwork, assembleNetwork, layerGraph, и dlnetwork функции автоматически присваивают имена к слоям с Name установите на ''.

Типы данных: char | string

Веса класса для взвешенной потери перекрестной энтропии в виде вектора из положительных чисел или 'none'.

Для векторных весов класса каждый элемент представляет вес для соответствующего класса в Classes свойство. Чтобы задать вектор из весов класса, необходимо также задать классы с помощью 'Classes'.

Если ClassWeights свойством является 'none', затем слой применяет невзвешенную потерю перекрестной энтропии.

Классы выходного слоя в виде категориального вектора, массива строк, массива ячеек из символьных векторов или 'auto'. Если Classes 'auto', затем программное обеспечение автоматически устанавливает классы в учебное время. Если вы задаете массив строк или массив ячеек из символьных векторов str, затем программное обеспечение устанавливает классы выходного слоя к categorical(str,str).

Типы данных: char | categorical | string | cell

Выходные аргументы

свернуть все

Слой Classification, возвращенный как ClassificationOutputLayer объект.

Для получения информации о конкатенирующих слоях, чтобы создать архитектуру сверточной нейронной сети, смотрите Layer.

Больше о

свернуть все

Слой классификации

Слой классификации вычисляет потерю перекрестной энтропии для классификации и взвешенных задач классификации со взаимоисключающими классами.

Для типичных сетей классификации слой классификации обычно следует за softmax слоем. В слое классификации, trainNetwork принимает значения от функции softmax и присваивает каждый вход одному из K взаимоисключающие классы с помощью перекрестной энтропийной функции для 1 из K кодирование схемы [1]:

loss=1Nn=1Ni=1Kwitnilnyni,

где N является количеством отсчетов, K является количеством классов, wi вес для класса i, tni индикатор, что n th выборка принадлежит i th класс, и yni выход для демонстрационного n для класса i, который в этом случае, значение от функции softmax. Другими словами, yni вероятность, что сеть сопоставляет n th вход с классом i.

Ссылки

[1] Епископ, C. M. Распознавание образов и машинное обучение. Спрингер, Нью-Йорк, Нью-Йорк, 2006.

Расширенные возможности

Генерация кода C/C++
Генерация кода C и C++ с помощью MATLAB® Coder™.

Генерация кода графического процессора
Сгенерируйте код CUDA® для NVIDIA® графические процессоры с помощью GPU Coder™.

Введенный в R2016a