Слой Classification
Слой классификации вычисляет потерю перекрестной энтропии для классификации и взвешенных задач классификации со взаимоисключающими классами.
Создайте использование слоя классификации classificationLayer
.
ClassWeights
— Веса класса для взвешенной потери перекрестной энтропии'none'
(значение по умолчанию) | вектор из положительных чиселВеса класса для взвешенной потери перекрестной энтропии в виде вектора из положительных чисел или 'none'
.
Для векторных весов класса каждый элемент представляет вес для соответствующего класса в Classes
свойство. Чтобы задать вектор из весов класса, необходимо также задать классы с помощью 'Classes'
.
Если ClassWeights
свойством является 'none'
, затем слой применяет невзвешенную потерю перекрестной энтропии.
Classes
— Классы выходного слоя'auto'
(значение по умолчанию) | категориальный вектор | массив строк | массив ячеек из символьных векторов
Классы выходного слоя в виде категориального вектора, массива строк, массива ячеек из символьных векторов или 'auto'
. Если Classes
'auto'
, затем программное обеспечение автоматически устанавливает классы в учебное время. Если вы задаете массив строк или массив ячеек из символьных векторов str
, затем программное обеспечение устанавливает классы выходного слоя к categorical(str,str)
.
Типы данных: char |
categorical
| string
| cell
OutputSize
— Размер выхода'auto'
(значение по умолчанию) | положительное целое числоЭто свойство доступно только для чтения.
Размер выхода в виде положительного целого числа. Это значение является количеством меток в данных. Перед обучением выходной размер установлен в 'auto'
.
LossFunction
— Функция потерь для обучения'crossentropyex'
Это свойство доступно только для чтения.
Функция потерь для обучения в виде 'crossentropyex'
, который выдерживает за Перекрестную Энтропийную Функцию для k Взаимоисключающие Классы.
Name
— Имя слоя''
(значение по умолчанию) | вектор символов | строковый скаляр
Имя слоя в виде вектора символов или строкового скаляра. Чтобы включать слой в график слоев, необходимо задать непустое, уникальное имя слоя. Если вы обучаете серийную сеть со слоем и Name
установлен в ''
, затем программное обеспечение автоматически присваивает имя к слою в учебное время.
Типы данных: char |
string
NumInputs
— Количество входных параметровКоличество входных параметров слоя. Этот слой принимает один вход только.
Типы данных: double
InputNames
— Введите имена{'in'}
(значение по умолчанию)Введите имена слоя. Этот слой принимает один вход только.
Типы данных: cell
NumOutputs
— Количество выходных параметровКоличество выходных параметров слоя. Слой не имеет никаких выходных параметров.
Типы данных: double
OutputNames
— Выведите имена{}
(значение по умолчанию)Выведите имена слоя. Слой не имеет никаких выходных параметров.
Типы данных: 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
Слой классификации вычисляет потерю перекрестной энтропии для классификации и взвешенных задач классификации со взаимоисключающими классами.
Для типичных сетей классификации слой классификации должен следовать за softmax слоем. В слое классификации, trainNetwork
принимает значения от функции softmax и присваивает каждый вход одному из K взаимоисключающие классы с помощью перекрестной энтропийной функции для 1 из K кодирование схемы [1]:
где N является количеством выборок, K является количеством классов, вес для класса i, индикатор, что n th выборка принадлежит i th класс, и выход для демонстрационного n для класса i, который в этом случае, значение от функции softmax. Другими словами, вероятность, что сеть сопоставляет n th вход с классом i.
ClassNames
свойство будет удаленоНе рекомендуемый запуск в R2018b
ClassNames
будет удален. Используйте Classes
вместо этого. Чтобы обновить ваш код, замените все экземпляры ClassNames
с Classes
. Существуют некоторые различия между свойствами, которые требуют дополнительных обновлений вашего кода.
ClassNames
свойство выходного слоя является массивом ячеек из символьных векторов. Classes
свойство является категориальным массивом. Использовать значение Classes
с функциями, которые требуют входа массива ячеек, преобразуйте классы с помощью cellstr
функция.
[1] Епископ, C. M. Распознавание образов и машинное обучение. Спрингер, Нью-Йорк, Нью-Йорк, 2006.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.