Обучите слой softmax для классификации
Загрузите выборочные данные.
[X,T] = iris_dataset;
X
является матрицей 4х150 из четырёх атрибутов радужки: Длина сепала, ширина чашелистика, длина лепестка, ширина лепестка.
T
является матрицей 3x150 связанных векторов классов, определяющей, какому из трех классов каждый вход назначен. Каждая строка соответствует фиктивной переменной, представляющей один из видов радужки (классов). В каждом столбце 1 в одной из трех строк представляет класс, к которому принадлежит конкретная выборка (наблюдение или пример). Существует нуль в строках для других классов, к которым наблюдение не принадлежит.
Обучите слой softmax с помощью выборочных данных.
net = trainSoftmaxLayer(X,T);
nntraintool('close')
Классифицировать наблюдения в один из трех классов с помощью обученного слоя softmax.
Y = net(X);
Постройте матрицу неточностей с помощью целей и классификаций, полученных из слоя softmax.
plotconfusion(T,Y);
X
- Обучающие данныеОбучающие данные, заданные как m -by - n матрица, где m - количество переменных в обучающих данных, а n - количество наблюдений (примеры). Следовательно, каждый столбец X
представляет выборку.
Типы данных: single
| double
T
- Целевые данныеЦелевые данные, заданные как k -by - n матрица, где k - количество классов, а n - количество наблюдений. Каждая строка является фиктивной переменной, представляющей конкретный класс. Другими словами, каждый столбец представляет выборку, и все значения столбца равны нулю, кроме одной в строке. Эта отдельная запись указывает класс для этой выборки.
Типы данных: single
| double
Задайте необязательные разделенные разделенными запятой парами Name,Value
аргументы. Name
- имя аргумента и Value
- соответствующее значение. Name
должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN
.
'MaxEpochs',400,'ShowProgressWindow',false
задает максимальное количество итераций как 400 и скрывает окно обучения.'MaxEpochs'
- Максимальное количество итераций обученияМаксимальное количество итераций обучения, заданное как разделенная разделенными запятой парами, состоящая из 'MaxEpochs'
и положительное целое значение.
Пример: 'MaxEpochs',500
Типы данных: single
| double
'LossFunction'
- Функция потерь для слоя softmax'crossentropy'
(по умолчанию) | 'mse'
Функция потерь для слоя softmax, заданная как разделенная разделенными запятой парами, состоящая из 'LossFunction'
и любой из них 'crossentropy'
или 'mse'
.
mse
обозначает среднюю функцию квадратичной невязки, которая задается:
где n количество примеров обучения, и k количество классов. - ij-я запись целевой матрицы, T
, и - i-й выход автоэнкодера, когда входной вектор x j.
Функция перекрестной энтропии задается:
Пример: 'LossFunction','mse'
'ShowProgressWindow'
- Индикатор для отображения окна обученияtrue
(по умолчанию) | false
Индикатор для отображения окна обучения во время обучения, заданный как разделенная разделенными запятой парами, состоящая из 'ShowProgressWindow'
и любой из них true
или false
.
Пример: 'ShowProgressWindow',false
Типы данных: logical
'TrainingAlgorithm'
- Алгоритм настройки'trainscg'
(по умолчанию)Алгоритм настройки, используемый для обучения слоя softmax, задается как разделенная разделенными запятой парами, состоящая из 'TrainingAlgorithm'
и 'trainscg'
, который обозначает масштабированный сопряженный градиент.
Пример: 'TrainingAlgorithm','trainscg'
net
- слой Softmax для классификацииnetwork
объектСлой Softmax для классификации, возвращенный как network
объект. Слой softmax, net
, совпадает с размером целевого объекта T
.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.