ClassificationOutputLayer

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

Описание

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

Создание

Создайте слой классификации с помощью classificationLayer.

Свойства

расширить все

Выходы классификации

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

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

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

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

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

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

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

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

Функция потерь для обучения, заданная как 'crossentropyex', что означает Cross Entropy Function для 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] Bishop, C. M. Pattern Recognition and Машинное Обучение. Спрингер, Нью-Йорк, Нью-Йорк, 2006.

Введенный в R2016a