exponenta event banner

ClassificationOutputLayer

Классификационный слой

Описание

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

Создание

Создание классификационного слоя с помощью classificationLayer.

Свойства

развернуть все

Результат классификации

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

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

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

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

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

Это свойство доступно только для чтения.

Размер вывода, заданный как положительное целое число. Это значение представляет собой количество меток в данных. Перед началом обучения устанавливается размер выходного сигнала 'auto'.

Это свойство доступно только для чтения.

Функция потери для обучения, указанная как 'crossentropyex', что означает функцию перекрестной энтропии для k взаимоисключающих классов.

Слой

Имя слоя, указанное как символьный вектор или строковый скаляр. Чтобы включить слой в график слоев, необходимо указать непустое уникальное имя слоя. Если вы обучаете последовательную сеть с уровнем и Name имеет значение ''затем программа автоматически присваивает имя слою во время обучения.

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

Количество входов слоя. Этот слой принимает только один вход.

Типы данных: double

Входные имена слоя. Этот слой принимает только один вход.

Типы данных: cell

Количество выходов уровня. Уровень не имеет выходных данных.

Типы данных: double

Выходные имена слоя. Уровень не имеет выходных данных.

Типы данных: cell

Примеры

свернуть все

Создание классификационного слоя с именем '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

Подробнее

развернуть все

Вопросы совместимости

развернуть все

Не рекомендуется начинать с R2018b

Ссылки

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

Представлен в R2016a