Классифицировать данные с помощью обученной нейронной сети глубокого обучения
Вы можете делать прогнозы, используя обученную нейронную сеть для глубокого обучения на CPU или GPU. Для использования графического процессора требуется Toolbox™ параллельных вычислений и поддерживаемое устройство графического процессора. Сведения о поддерживаемых устройствах см. в разделе Поддержка графического процессора по выпуску (Parallel Computing Toolbox). Укажите требования к оборудованию с помощью ExecutionEnvironment аргумент пары имя-значение.
Для сетей с несколькими выходами используйте predict и установите 'ReturnCategorial' опция для true.
предсказывает метки классов с дополнительными параметрами, заданными одним или несколькими аргументами пары имя-значение, с использованием любого из предыдущих синтаксисов.YPred = classify(___,Name,Value)
[ также возвращает оценки классификации, соответствующие меткам класса, используя любой из предыдущих синтаксисов.YPred,scores] = classify(___)
Совет
При составлении прогнозов с последовательностями различной длины размер мини-партии может влиять на количество дополнений, добавляемых к входным данным, что может привести к различным прогнозируемым значениям. Попробуйте использовать различные значения, чтобы увидеть, что лучше всего подходит для вашей сети. Чтобы указать размер мини-пакета и параметры заполнения, используйте 'MiniBatchSize' и 'SequenceLength' соответственно.
Загрузите образцы данных.
[XTrain,YTrain] = digitTrain4DArrayData;
digitTrain4DArrayData загружает набор обучающих цифр 4-D виде данных массива. XTrain множество 28 на 28 на 1 на 5000, где 28 высота, и 28 ширина изображений. 1 - количество каналов, а 5000 - количество синтетических изображений рукописных цифр. YTrain - категориальный вектор, содержащий метки для каждого наблюдения.
Построение архитектуры сверточной нейронной сети.
layers = [ ... imageInputLayer([28 28 1]) convolution2dLayer(5,20) reluLayer maxPooling2dLayer(2,'Stride',2) fullyConnectedLayer(10) softmaxLayer classificationLayer];
Установите параметры по умолчанию для стохастического градиентного спуска с импульсом.
options = trainingOptions('sgdm');Обучение сети.
rng('default')
net = trainNetwork(XTrain,YTrain,layers,options);Training on single CPU. Initializing input data normalization. |========================================================================================| | Epoch | Iteration | Time Elapsed | Mini-batch | Mini-batch | Base Learning | | | | (hh:mm:ss) | Accuracy | Loss | Rate | |========================================================================================| | 1 | 1 | 00:00:00 | 10.16% | 2.3195 | 0.0100 | | 2 | 50 | 00:00:03 | 50.78% | 1.7102 | 0.0100 | | 3 | 100 | 00:00:06 | 63.28% | 1.1632 | 0.0100 | | 4 | 150 | 00:00:08 | 60.16% | 1.0859 | 0.0100 | | 6 | 200 | 00:00:10 | 68.75% | 0.8997 | 0.0100 | | 7 | 250 | 00:00:13 | 76.56% | 0.7919 | 0.0100 | | 8 | 300 | 00:00:16 | 73.44% | 0.8411 | 0.0100 | | 9 | 350 | 00:00:18 | 81.25% | 0.5512 | 0.0100 | | 11 | 400 | 00:00:20 | 89.84% | 0.4745 | 0.0100 | | 12 | 450 | 00:00:23 | 92.19% | 0.3614 | 0.0100 | | 13 | 500 | 00:00:26 | 94.53% | 0.3160 | 0.0100 | | 15 | 550 | 00:00:28 | 96.09% | 0.2543 | 0.0100 | | 16 | 600 | 00:00:31 | 92.19% | 0.2765 | 0.0100 | | 17 | 650 | 00:00:33 | 95.31% | 0.2460 | 0.0100 | | 18 | 700 | 00:00:35 | 99.22% | 0.1419 | 0.0100 | | 20 | 750 | 00:00:38 | 98.44% | 0.1000 | 0.0100 | | 21 | 800 | 00:00:40 | 98.44% | 0.1449 | 0.0100 | | 22 | 850 | 00:00:43 | 98.44% | 0.0989 | 0.0100 | | 24 | 900 | 00:00:45 | 96.88% | 0.1315 | 0.0100 | | 25 | 950 | 00:00:47 | 100.00% | 0.0859 | 0.0100 | | 26 | 1000 | 00:00:50 | 100.00% | 0.0701 | 0.0100 | | 27 | 1050 | 00:00:53 | 100.00% | 0.0759 | 0.0100 | | 29 | 1100 | 00:00:55 | 99.22% | 0.0663 | 0.0100 | | 30 | 1150 | 00:00:58 | 98.44% | 0.0776 | 0.0100 | | 30 | 1170 | 00:00:59 | 99.22% | 0.0731 | 0.0100 | |========================================================================================|
Запустите обученную сеть на тестовом аппарате.
[XTest,YTest]= digitTest4DArrayData; YPred = classify(net,XTest);
Отображение первых 10 изображений в тестовых данных и сравнение с классификацией из classify.
[YTest(1:10,:) YPred(1:10,:)]
ans = 10x2 categorical
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
Результаты classify соответствует истинным цифрам для первых десяти изображений.
Вычислите точность по всем данным теста.
accuracy = sum(YPred == YTest)/numel(YTest)
accuracy = 0.9820
Загрузить предварительно обученную сеть. JapaneseVowelsNet является предварительно обученной сетью LSTM, обученной на наборе данных Vowels на японском языке, как описано в [1] и [2]. Его обучали последовательностям, отсортированным по длине последовательности с размером мини-партии 27.
load JapaneseVowelsNetПросмотр сетевой архитектуры.
net.Layers
ans =
5x1 Layer array with layers:
1 'sequenceinput' Sequence Input Sequence input with 12 dimensions
2 'lstm' LSTM LSTM with 100 hidden units
3 'fc' Fully Connected 9 fully connected layer
4 'softmax' Softmax softmax
5 'classoutput' Classification Output crossentropyex with '1' and 8 other classes
Загрузите данные теста.
[XTest,YTest] = japaneseVowelsTestData;
Классифицируйте данные теста.
YPred = classify(net,XTest);
Просмотрите метки первых 10 последовательностей с их прогнозируемыми метками.
[YTest(1:10) YPred(1:10)]
ans = 10x2 categorical
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
Вычислите точность классификации прогнозов.
accuracy = sum(YPred == YTest)/numel(YTest)
accuracy = 0.8595
Загрузка предварительно обученной сети TransmissionCasingNet. Эта сеть классифицирует состояние зубьев зубьев зубчатой передачи системы передачи при наличии смеси числовых показаний датчиков, статистики и категориальных входов.
load TransmissionCasingNet.matПросмотр сетевой архитектуры.
net.Layers
ans =
7x1 Layer array with layers:
1 'input' Feature Input 22 features with 'zscore' normalization
2 'fc_1' Fully Connected 50 fully connected layer
3 'batchnorm' Batch Normalization Batch normalization with 50 channels
4 'relu' ReLU ReLU
5 'fc_2' Fully Connected 2 fully connected layer
6 'softmax' Softmax softmax
7 'classoutput' Classification Output crossentropyex with classes 'No Tooth Fault' and 'Tooth Fault'
Считывание данных корпуса коробки передач из CSV-файла "transmissionCasingData.csv".
filename = "transmissionCasingData.csv"; tbl = readtable(filename,'TextType','String');
Преобразовать метки для прогнозирования в категориальные с помощью convertvars функция.
labelName = "GearToothCondition"; tbl = convertvars(tbl,labelName,'categorical');
Чтобы делать прогнозы с использованием категориальных элементов, необходимо сначала преобразовать категориальные элементы в числовые. Во-первых, преобразуйте категориальные предикторы в категориальные, используя convertvars путем указания строкового массива, содержащего имена всех категориальных входных переменных. В этом наборе данных имеются две категориальные функции с именами "SensorCondition" и "ShaftCondition".
categoricalInputNames = ["SensorCondition" "ShaftCondition"]; tbl = convertvars(tbl,categoricalInputNames,'categorical');
Закольцовывать категориальные входные переменные. Для каждой переменной:
Преобразование категориальных значений в одноступенчатые кодированные векторы с помощью onehotencode функция.
Добавьте векторы с одним горячим сигналом в таблицу с помощью addvars функция. Укажите, следует ли вставлять векторы после столбца, содержащего соответствующие категориальные данные.
Удалите соответствующий столбец, содержащий категориальные данные.
for i = 1:numel(categoricalInputNames) name = categoricalInputNames(i); oh = onehotencode(tbl(:,name)); tbl = addvars(tbl,oh,'After',name); tbl(:,name) = []; end
Разбейте векторы на отдельные столбцы с помощью splitvars функция.
tbl = splitvars(tbl);
Просмотрите первые несколько строк таблицы.
head(tbl)
ans=8×23 table
SigMean SigMedian SigRMS SigVar SigPeak SigPeak2Peak SigSkewness SigKurtosis SigCrestFactor SigMAD SigRangeCumSum SigCorrDimension SigApproxEntropy SigLyapExponent PeakFreq HighFreqPower EnvPower PeakSpecKurtosis No Sensor Drift Sensor Drift No Shaft Wear Shaft Wear GearToothCondition
________ _________ ______ _______ _______ ____________ ___________ ___________ ______________ _______ ______________ ________________ ________________ _______________ ________ _____________ ________ ________________ _______________ ____________ _____________ __________ __________________
-0.94876 -0.9722 1.3726 0.98387 0.81571 3.6314 -0.041525 2.2666 2.0514 0.8081 28562 1.1429 0.031581 79.931 0 6.75e-06 3.23e-07 162.13 0 1 1 0 No Tooth Fault
-0.97537 -0.98958 1.3937 0.99105 0.81571 3.6314 -0.023777 2.2598 2.0203 0.81017 29418 1.1362 0.037835 70.325 0 5.08e-08 9.16e-08 226.12 0 1 1 0 No Tooth Fault
1.0502 1.0267 1.4449 0.98491 2.8157 3.6314 -0.04162 2.2658 1.9487 0.80853 31710 1.1479 0.031565 125.19 0 6.74e-06 2.85e-07 162.13 0 1 0 1 No Tooth Fault
1.0227 1.0045 1.4288 0.99553 2.8157 3.6314 -0.016356 2.2483 1.9707 0.81324 30984 1.1472 0.032088 112.5 0 4.99e-06 2.4e-07 162.13 0 1 0 1 No Tooth Fault
1.0123 1.0024 1.4202 0.99233 2.8157 3.6314 -0.014701 2.2542 1.9826 0.81156 30661 1.1469 0.03287 108.86 0 3.62e-06 2.28e-07 230.39 0 1 0 1 No Tooth Fault
1.0275 1.0102 1.4338 1.0001 2.8157 3.6314 -0.02659 2.2439 1.9638 0.81589 31102 1.0985 0.033427 64.576 0 2.55e-06 1.65e-07 230.39 0 1 0 1 No Tooth Fault
1.0464 1.0275 1.4477 1.0011 2.8157 3.6314 -0.042849 2.2455 1.9449 0.81595 31665 1.1417 0.034159 98.838 0 1.73e-06 1.55e-07 230.39 0 1 0 1 No Tooth Fault
1.0459 1.0257 1.4402 0.98047 2.8157 3.6314 -0.035405 2.2757 1.955 0.80583 31554 1.1345 0.0353 44.223 0 1.11e-06 1.39e-07 230.39 0 1 0 1 No Tooth Fault
Спрогнозировать метки тестовых данных с использованием обученной сети и рассчитать точность. Укажите размер мини-партии, используемый для обучения.
YPred = classify(net,tbl(:,1:end-1));
Вычислите точность классификации. Точность - это доля меток, которую сеть предсказывает правильно.
YTest = tbl{:,labelName};
accuracy = sum(YPred == YTest)/numel(YTest)accuracy = 0.9952
net - Обученная сетьSeriesNetwork объект | DAGNetwork объектОбученная сеть, указанная как SeriesNetwork или DAGNetwork объект. Обученную сеть можно получить путем импорта предварительно обученной сети (например, с помощью googlenet функция) или обучая собственную сеть с помощью trainNetwork.
imds - Хранилище данных образаImageDatastore объектХранилище данных изображения, указанное как ImageDatastore объект.
ImageDatastore позволяет выполнять пакетное чтение файлов изображений JPG или PNG с помощью предварительной выборки. Если для чтения изображений используется пользовательская функция, то ImageDatastore не выполняет предварительную выборку.
Совет
Использовать augmentedImageDatastore для эффективной предварительной обработки изображений для глубокого обучения, включая изменение размеров изображений.
Не используйте readFcn вариант imageDatastore для предварительной обработки или изменения размера, поскольку этот параметр обычно значительно медленнее.
ds - Хранилище данныхХранилище данных для данных из памяти и предварительной обработки. Хранилище данных должно возвращать данные в таблице или массиве ячеек. Формат выходных данных хранилища данных зависит от архитектуры сети.
| Сетевая архитектура | Выходные данные хранилища данных | Пример вывода |
|---|---|---|
| Одиночный вход | Таблица или массив ячеек, где первый столбец определяет предикторы. Элементы таблицы должны быть скалярами, векторами строк или массивами ячеек 1 на 1, содержащими числовой массив. Пользовательские хранилища данных должны выводить таблицы. |
data = read(ds) data =
4×1 table
Predictors
__________________
{224×224×3 double}
{224×224×3 double}
{224×224×3 double}
{224×224×3 double}
|
data = read(ds) data =
4×1 cell array
{224×224×3 double}
{224×224×3 double}
{224×224×3 double}
{224×224×3 double} | ||
| Множественный вход | Массив ячеек по крайней мере с Первое Порядок входных данных задается |
data = read(ds) data =
4×2 cell array
{224×224×3 double} {128×128×3 double}
{224×224×3 double} {128×128×3 double}
{224×224×3 double} {128×128×3 double}
{224×224×3 double} {128×128×3 double} |
Формат предикторов зависит от типа данных.
| Данные | Формат предикторов |
|---|---|
| 2-D изображение | h-by-w-by-c числовой массив, где h, w и c - высота, ширина и количество каналов изображения соответственно. |
| 3-D изображение | h-by-w-by-d-by-c числовой массив, где h, w, d и c - высота, ширина, глубина и количество каналов изображения соответственно. |
| Векторная последовательность | матрица c-by-s, где c - число признаков последовательности, а s - длина последовательности. |
| 2-D последовательность изображений | h-by-w-by-c-by-s массив, где h, w и c соответствуют высоте, ширине и количеству каналов изображения соответственно, а s - длина последовательности. Каждая последовательность в мини-партии должна иметь одинаковую длину. |
| 3-D последовательность изображений | h-by-w-d-by-c-by-s массив, где h, w, d и c соответствуют высоте, ширине, глубине и количеству каналов изображения, соответственно, и s - длина последовательности. Каждая последовательность в мини-партии должна иметь одинаковую длину. |
| Особенности | вектор столбца c-by-1, где c - количество элементов. |
Дополнительные сведения см. в разделе Хранилища данных для глубокого обучения.
X - Данные изображения или элементаДанные изображения или элемента, заданные как числовой массив. Размер массива зависит от типа ввода:
| Вход | Описание |
|---|---|
| 2-D изображения | Числовой массив h-by-w-by-c-by-N, где h, w и c - высота, ширина и количество каналов изображений соответственно, а N - количество изображений. |
| 3-D изображения | Числовой массив h-by-d-by-c-by-N, где h, w, d и c - высота, ширина, глубина и количество каналов изображений соответственно, а N - количество изображений. |
| Особенности | A N-by-numFeatures числовой массив, где N - количество наблюдений и numFeatures - количество признаков входных данных. |
Если массив содержит NaNs, затем они распространяются по сети.
Для сетей с несколькими входами можно указать несколько массивов X1, …, XN, где N - количество сетевых входов и входов Xi соответствует сетевому входу net.InputNames(i).
sequences - Данные последовательности или временных рядовДанные последовательности или временного ряда, заданные как массив N-by-1 ячеек числовых массивов, где N - количество наблюдений, числовой массив, представляющий одну последовательность, или хранилище данных.
Для ввода массива ячеек или числового массива размеры числовых массивов, содержащих последовательности, зависят от типа данных.
| Вход | Описание |
|---|---|
| Векторные последовательности | матрицы c-by-s, где c - число признаков последовательностей, а s - длина последовательности. |
| 2-D последовательности изображений | массивы h-by-w-by-s, где h, w и c соответствуют высоте, ширине и количеству каналов изображений, соответственно, и s - длина последовательности. |
| 3-D последовательности изображений | h-by-w-d-by-c-by-s, где h, w, d и c соответствуют высоте, ширине, глубине и количеству каналов 3-D изображений, соответственно, и s - длина последовательности. |
Для входа хранилища данных хранилище данных должно возвратить данные как множество клетки последовательностей или стола, первая колонка которого содержит последовательности. Размеры данных последовательности должны соответствовать приведенной выше таблице.
tbl - Таблица данных изображения или элементаtable
Таблица данных изображения или элемента. Каждая строка в таблице соответствует наблюдению.
Расположение предикторов в столбцах таблицы зависит от типа входных данных.
| Вход | Предсказатели |
|---|---|
| Данные изображения |
Укажите предикторы в одном столбце. |
| Данные о характеристиках | Числовой скаляр. Укажите предикторы в первом |
Этот аргумент поддерживает сети только с одним входом.
Типы данных: table
'MiniBatchSize','256' задает размер мини-партии как 256.Укажите необязательную пару, разделенную запятыми Name,Value аргумент. Name является именем аргумента и Value - соответствующее значение. Name должно отображаться внутри отдельных кавычек (' ').
'MiniBatchSize' - Размер мини-партийРазмер мини-пакетов, используемых для прогнозирования, задается как положительное целое число. Большие размеры мини-партии требуют больше памяти, но могут привести к более быстрым прогнозам.
При составлении прогнозов с последовательностями различной длины размер мини-партии может влиять на количество дополнений, добавляемых к входным данным, что может привести к различным прогнозируемым значениям. Попробуйте использовать различные значения, чтобы увидеть, что лучше всего подходит для вашей сети. Чтобы указать размер мини-пакета и параметры заполнения, используйте 'MiniBatchSize' и 'SequenceLength' соответственно.
Пример: 'MiniBatchSize',256
'Acceleration' - Оптимизация производительности'auto' (по умолчанию) | 'mex' | 'none'Оптимизация производительности, указанная как пара, разделенная запятыми, состоящая из 'Acceleration' и одно из следующих:
'auto' - Автоматически применять ряд оптимизаций, подходящих для входной сети и аппаратных ресурсов.
'mex' - Компиляция и выполнение функции MEX. Эта опция доступна только при использовании графического процессора. Для использования графического процессора требуется панель параллельных вычислений и поддерживаемое устройство графического процессора. Сведения о поддерживаемых устройствах см. в разделе Поддержка графического процессора по выпуску (Parallel Computing Toolbox). Если панель инструментов Parallel Computing Toolbox или подходящий графический процессор недоступны, программа возвращает ошибку.
'none' - Отключить все ускорения.
Параметр по умолчанию: 'auto'. Если 'auto' указано, MATLAB ® применит ряд совместимых оптимизаций. Если вы используете 'auto' , MATLAB никогда не генерирует функцию MEX.
Использование 'Acceleration' варианты 'auto' и 'mex' может обеспечить преимущества производительности, но за счет увеличенного начального времени выполнения. Последующие вызовы с совместимыми параметрами выполняются быстрее. Оптимизация производительности используется при планировании многократного вызова функции с использованием новых входных данных.
'mex' генерирует и выполняет функцию MEX на основе сети и параметров, используемых в вызове функции. Вы можете иметь несколько функций MEX, связанных с одной сетью одновременно. При сбросе сетевой переменной также удаляются все функции MEX, связанные с этой сетью.
'mex' доступна только при использовании графического процессора. Необходимо установить компилятор C/C + + и пакет поддержки GPU Coder™ Interface for Deep Learning Libraries. Установите пакет поддержки с помощью проводника Add-On в MATLAB. Инструкции по установке см. в разделе Настройка MEX (кодер графического процессора). Кодер графического процессора не требуется.
'mex' не поддерживает все слои. Список поддерживаемых слоев см. в разделе Поддерживаемые слои (кодер графического процессора). Рецидивирующие нейронные сети (RNN), содержащие sequenceInputLayer не поддерживаются.
'mex' не поддерживает сети с несколькими входными слоями или с несколькими выходными слоями.
Нельзя использовать MATLAB Compiler™ для развертывания сети при использовании 'mex' вариант.
Пример: 'Acceleration','mex'
'ExecutionEnvironment' - Аппаратный ресурс'auto' (по умолчанию) | 'gpu' | 'cpu'Аппаратный ресурс, указанный как разделенная запятыми пара, состоящая из 'ExecutionEnvironment' и одно из следующих:
'auto' - использовать графический процессор, если он доступен; в противном случае используйте CPU.
'gpu' - Использовать графический процессор. Для использования графического процессора требуется панель параллельных вычислений и поддерживаемое устройство графического процессора. Сведения о поддерживаемых устройствах см. в разделе Поддержка графического процессора по выпуску (Parallel Computing Toolbox). Если панель инструментов Parallel Computing Toolbox или подходящий графический процессор недоступны, программа возвращает ошибку.
'cpu' - Использовать ЦП.
Пример: 'ExecutionEnvironment','cpu'
'SequenceLength' - Опция для вставки, усечения или разделения входных последовательностей'longest' (по умолчанию) | 'shortest' | положительное целое числоОпция для вставки, усечения или разделения входных последовательностей, заданная как одна из следующих:
'longest' - Последовательности прокладок в каждой мини-партии должны иметь ту же длину, что и самая длинная последовательность. Этот параметр не отбрасывает данные, хотя заполнение может вызвать шум в сети.
'shortest' - Усечение последовательностей в каждой мини-партии до такой же длины, что и самая короткая последовательность. Этот параметр обеспечивает отсутствие добавления дополнений за счет отбрасывания данных.
Положительное целое число - для каждой мини-партии поместите последовательности в ближайшую кратную указанную длину, которая больше, чем самая длинная длина последовательности в мини-партии, а затем разбейте последовательности на меньшие последовательности указанной длины. Если происходит разделение, программа создает дополнительные мини-пакеты. Используйте эту опцию, если полные последовательности не помещаются в память. Либо попробуйте уменьшить количество последовательностей на мини-пакет, установив 'MiniBatchSize' для более низкого значения.
Дополнительные сведения об эффекте заполнения, усечения и разделения входных последовательностей см. в разделах Заполнение последовательности, усечение и разделение.
Пример: 'SequenceLength','shortest'
'SequencePaddingDirection' - Направление заполнения или усечения'right' (по умолчанию) | 'left'Направление заполнения или усечения, указанное как одно из следующих:
'right' - Последовательность подушек или усечений справа. Последовательности начинаются на одном и том же этапе, и программное обеспечение усекает или добавляет дополнение к концу последовательностей.
'left' - Последовательность подушек или усечений слева. Программное обеспечение усекает или добавляет дополнение к началу последовательностей, так что последовательности заканчиваются на одном и том же шаге времени.
Поскольку уровни LSTM обрабатывают данные последовательности один раз за раз, когда уровень OutputMode свойство - 'last'любое заполнение на последних временных этапах может отрицательно влиять на выход слоя. Для размещения или усечения данных последовательности слева установите 'SequencePaddingDirection' опция для 'left'.
Для сетей «последовательность-последовательность» (когда OutputMode свойство - 'sequence' для каждого уровня LSTM), любое заполнение в первых временных шагах может негативно влиять на прогнозы для более ранних временных шагов. Для добавления или усечения данных последовательности справа установите 'SequencePaddingDirection' опция для 'right'.
Дополнительные сведения об эффекте заполнения, усечения и разделения входных последовательностей см. в разделах Заполнение последовательности, усечение и разделение.
'SequencePaddingValue' - Значения для входных последовательностей площадкиЗначение, с помощью которого подаются входные последовательности, заданные как скаляр. Параметр допустим только в том случае, если SequenceLength является 'longest' или положительное целое число. Не устанавливать последовательности с NaN, поскольку это может распространять ошибки по всей сети.
Пример: 'SequencePaddingValue',-1
YPred - Прогнозируемые метки классовПрогнозируемые метки классов, возвращаемые как категориальный вектор или клеточный массив категориальных векторов. Формат YPred зависит от типа задачи.
В следующей таблице описывается формат задач классификации.
| Задача | Формат |
|---|---|
| Классификация изображений или элементов | N-by-1 категориальный вектор меток, где N - число наблюдений. |
| Классификация «последовательность-метка» | |
| Классификация последовательности к последовательности | N-by-1 клеточный массив категориальных последовательностей меток, где N - количество наблюдений. Каждая последовательность имеет то же количество временных шагов, что и соответствующая входная последовательность после применения Для задач классификации последовательности к последовательности с одним наблюдением, |
scores - Прогнозируемые оценки классаПрогнозируемые оценки или ответы, возвращаемые в виде матрицы или массива ячеек матриц. Формат scores зависит от типа задачи.
В следующей таблице описывается формат scores.
| Задача | Формат |
|---|---|
| Классификация изображений | Матрица N-by-K, где N - количество наблюдений, а K - число классов |
| Классификация «последовательность-метка» | |
| Классификация элементов | |
| Классификация последовательности к последовательности | N-by-1 массив ячеек матриц, где N - количество наблюдений. Последовательности представляют собой матрицы с K строками, где K - количество классов. Каждая последовательность имеет то же количество временных шагов, что и соответствующая входная последовательность после применения |
Для задач классификации последовательности к последовательности с одним наблюдением, sequences может быть матрицей. В этом случае scores является матрицей прогнозируемых оценок класса.
Пример анализа классификационных оценок см. в разделе Классификация изображений веб-камеры с помощью глубокого обучения.
При обучении сети с помощью trainNetwork функция или при использовании функций прогнозирования или проверки с DAGNetwork и SeriesNetwork объекты, программное обеспечение выполняет эти вычисления, используя арифметику с одной точностью и плавающей запятой. Функции обучения, прогнозирования и проверки включают trainNetwork, predict, classify, и activations. Программа использует арифметику с одинарной точностью при обучении сетей с использованием процессоров и графических процессоров.
Для сетей с несколькими выходами используйте predict и установите 'ReturnCategorial' опция для true.
Можно вычислить прогнозируемые баллы из обученной сети с помощью predict.
Можно также вычислить активации с сетевого уровня с помощью activations.
Для сетей классификации «последовательность-метка» и «последовательность-последовательность» можно делать прогнозы и обновлять состояние сети с помощью classifyAndUpdateState и predictAndUpdateState.
[1] М. Кудо, Дж. Тояма и М. Симбо. «Многомерная классификация кривых с использованием сквозных областей». Буквы распознавания образов. т. 20, № 11-13, стр. 1103-1111.
[2] Хранилище машинного обучения UCI: набор данных гласных на японском языке. https://archive.ics.uci.edu/ml/datasets/Japanese+Vowels
Примечания и ограничения по использованию:
Генерация кода C++ поддерживает следующие синтаксисы:
[YPred,scores] = classify(net,X)
[YPred,scores] = classify(net,sequences)
[YPred,scores] = classify(__,Name,Value)
Генерация кода C++ для classify не поддерживается для регрессионных сетей и сетей с несколькими выходами.
Для входов векторной последовательности число элементов должно быть константой во время генерации кода. Длина последовательности может быть переменной.
Для входных данных последовательности изображений высота, ширина и количество каналов должны быть постоянными во время генерации кода.
Только 'MiniBatchSize', 'SequenceLength', 'SequencePaddingDirection', и 'SequencePaddingValue' для создания кода поддерживаются аргументы пары имя-значение. Все пары имя-значение должны быть константами времени компиляции.
Только 'longest' и 'shortest' вариант 'SequenceLength' для создания кода поддерживается пара имя-значение.
Если вы используете компилятор GCC C/C + + версии 8.2 или выше, вы можете получить -Wstringop-overflow предупреждение.
Создание кода для целевого устройства Intel ® MKL-DNN не поддерживает комбинацию 'SequenceLength','longest', 'SequencePaddingDirection','left', и 'SequencePaddingValue',0 аргументы «имя-значение».
Примечания и ограничения по использованию:
Генерация кода графического процессора поддерживает следующие синтаксисы:
[YPred,scores] = classify(net,X)
[YPred,scores] = classify(net,sequences)
[YPred,scores] = classify(__,Name,Value)
Генерация кода графического процессора для classify не поддерживается для регрессионных сетей и сетей с несколькими выходами.
Генерация кода графического процессора не поддерживает gpuArray входные данные для classify функция.
Библиотека cuDNN поддерживает векторные и 2-D последовательности изображений. Библиотека TensorRT поддерживает только векторные входные последовательности. ARM
®Compute Library для GPU не поддерживает повторяющиеся сети.
Для входов векторной последовательности число элементов должно быть константой во время генерации кода. Длина последовательности может быть переменной.
Для входных данных последовательности изображений высота, ширина и количество каналов должны быть постоянными во время генерации кода.
Только 'MiniBatchSize', 'SequenceLength', 'SequencePaddingDirection', и 'SequencePaddingValue' для создания кода поддерживаются аргументы пары имя-значение. Все пары имя-значение должны быть константами времени компиляции.
Только 'longest' и 'shortest' вариант 'SequenceLength' для создания кода поддерживается пара имя-значение.
Генерация кода графического процессора для classify функция поддерживает входные данные, определенные как типы данных с плавающей запятой с полуточностью. Дополнительные сведения см. в разделе half (Кодер графического процессора).
Если вы используете компилятор GCC C/C + + версии 8.2 или выше, вы можете получить -Wstringop-overflow предупреждение.
Когда входные данные являются gpuArray, массив ячеек или таблица, содержащая gpuArray данные или хранилище данных, которое возвращает gpuArray данные, "ExecutionEnvironment" параметр должен быть "auto" или "gpu".
Дополнительные сведения см. в разделе Запуск функций MATLAB на графическом процессоре (панель инструментов параллельных вычислений).
activations | classifyAndUpdateState | predict | predictAndUpdateState
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.