exponenta event banner

классифицировать

Классифицировать данные с помощью обученной нейронной сети глубокого обучения

Описание

Вы можете делать прогнозы, используя обученную нейронную сеть для глубокого обучения на CPU или GPU. Для использования графического процессора требуется Toolbox™ параллельных вычислений и поддерживаемое устройство графического процессора. Сведения о поддерживаемых устройствах см. в разделе Поддержка графического процессора по выпуску (Parallel Computing Toolbox). Укажите требования к оборудованию с помощью ExecutionEnvironment аргумент пары имя-значение.

Для сетей с несколькими выходами используйте predict и установите 'ReturnCategorial' опция для true.

YPred = classify(net,imds) предсказывает метки классов для изображений в хранилище данных образа imds использование обученной сети net.

YPred = classify(net,ds) предсказывает метки классов для данных в хранилище данных ds.

пример

YPred = classify(net,X) предсказывает метки классов для изображения или данных элемента, указанных числовым массивом X.

YPred = classify(net,X1,...,XN) предсказывает метки классов для данных в числовых массивах X1, …, XN для mutli-input сети net. Вход Xi соответствует сетевому входу net.InputNames(i).

пример

YPred = classify(net,sequences) предсказывает метки классов для временного ряда или данных последовательности в sequences для повторяющейся сети (например, сети LSTM или GRU) net.

пример

YPred = classify(net,tbl) предсказывает метки классов для данных в таблице tbl.

пример

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

Входные аргументы

свернуть все

Обученная сеть, указанная как SeriesNetwork или DAGNetwork объект. Обученную сеть можно получить путем импорта предварительно обученной сети (например, с помощью googlenet функция) или обучая собственную сеть с помощью trainNetwork.

Хранилище данных изображения, указанное как ImageDatastore объект.

ImageDatastore позволяет выполнять пакетное чтение файлов изображений JPG или PNG с помощью предварительной выборки. Если для чтения изображений используется пользовательская функция, то ImageDatastore не выполняет предварительную выборку.

Совет

Использовать augmentedImageDatastore для эффективной предварительной обработки изображений для глубокого обучения, включая изменение размеров изображений.

Не используйте readFcn вариант imageDatastore для предварительной обработки или изменения размера, поскольку этот параметр обычно значительно медленнее.

Хранилище данных для данных из памяти и предварительной обработки. Хранилище данных должно возвращать данные в таблице или массиве ячеек. Формат выходных данных хранилища данных зависит от архитектуры сети.

Сетевая архитектураВыходные данные хранилища данныхПример вывода
Одиночный вход

Таблица или массив ячеек, где первый столбец определяет предикторы.

Элементы таблицы должны быть скалярами, векторами строк или массивами ячеек 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}
Множественный вход

Массив ячеек по крайней мере с numInputs столбцы, где numInputs - количество сетевых входов.

Первое numInputs столбцы задают предикторы для каждого ввода.

Порядок входных данных задается InputNames свойство сети.

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 - количество элементов.

Дополнительные сведения см. в разделе Хранилища данных для глубокого обучения.

Данные изображения или элемента, заданные как числовой массив. Размер массива зависит от типа ввода:

ВходОписание
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).

Данные последовательности или временного ряда, заданные как массив 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 - длина последовательности.

Для входа хранилища данных хранилище данных должно возвратить данные как множество клетки последовательностей или стола, первая колонка которого содержит последовательности. Размеры данных последовательности должны соответствовать приведенной выше таблице.

Таблица данных изображения или элемента. Каждая строка в таблице соответствует наблюдению.

Расположение предикторов в столбцах таблицы зависит от типа входных данных.

ВходПредсказатели
Данные изображения
  • Абсолютный или относительный путь к изображению, заданный как символьный вектор в одном столбце

  • Изображение, указанное как 3-D числовой массив

Укажите предикторы в одном столбце.

Данные о характеристиках

Числовой скаляр.

Укажите предикторы в первом numFeatures столбцы таблицы, где numFeatures - количество признаков входных данных.

Этот аргумент поддерживает сети только с одним входом.

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

Аргументы пары «имя-значение»

Пример: 'MiniBatchSize','256' задает размер мини-партии как 256.

Укажите необязательную пару, разделенную запятыми Name,Value аргумент. Name является именем аргумента и Value - соответствующее значение. Name должно отображаться внутри отдельных кавычек (' ').

Размер мини-пакетов, используемых для прогнозирования, задается как положительное целое число. Большие размеры мини-партии требуют больше памяти, но могут привести к более быстрым прогнозам.

При составлении прогнозов с последовательностями различной длины размер мини-партии может влиять на количество дополнений, добавляемых к входным данным, что может привести к различным прогнозируемым значениям. Попробуйте использовать различные значения, чтобы увидеть, что лучше всего подходит для вашей сети. Чтобы указать размер мини-пакета и параметры заполнения, используйте 'MiniBatchSize' и 'SequenceLength' соответственно.

Пример: 'MiniBatchSize',256

Оптимизация производительности, указанная как пара, разделенная запятыми, состоящая из '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' - использовать графический процессор, если он доступен; в противном случае используйте CPU.

  • 'gpu' - Использовать графический процессор. Для использования графического процессора требуется панель параллельных вычислений и поддерживаемое устройство графического процессора. Сведения о поддерживаемых устройствах см. в разделе Поддержка графического процессора по выпуску (Parallel Computing Toolbox). Если панель инструментов Parallel Computing Toolbox или подходящий графический процессор недоступны, программа возвращает ошибку.

  • 'cpu' - Использовать ЦП.

Пример: 'ExecutionEnvironment','cpu'

Опция для вставки, усечения или разделения входных последовательностей, заданная как одна из следующих:

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

  • 'shortest' - Усечение последовательностей в каждой мини-партии до такой же длины, что и самая короткая последовательность. Этот параметр обеспечивает отсутствие добавления дополнений за счет отбрасывания данных.

  • Положительное целое число - для каждой мини-партии поместите последовательности в ближайшую кратную указанную длину, которая больше, чем самая длинная длина последовательности в мини-партии, а затем разбейте последовательности на меньшие последовательности указанной длины. Если происходит разделение, программа создает дополнительные мини-пакеты. Используйте эту опцию, если полные последовательности не помещаются в память. Либо попробуйте уменьшить количество последовательностей на мини-пакет, установив 'MiniBatchSize' для более низкого значения.

Дополнительные сведения об эффекте заполнения, усечения и разделения входных последовательностей см. в разделах Заполнение последовательности, усечение и разделение.

Пример: 'SequenceLength','shortest'

Направление заполнения или усечения, указанное как одно из следующих:

  • 'right' - Последовательность подушек или усечений справа. Последовательности начинаются на одном и том же этапе, и программное обеспечение усекает или добавляет дополнение к концу последовательностей.

  • 'left' - Последовательность подушек или усечений слева. Программное обеспечение усекает или добавляет дополнение к началу последовательностей, так что последовательности заканчиваются на одном и том же шаге времени.

Поскольку уровни LSTM обрабатывают данные последовательности один раз за раз, когда уровень OutputMode свойство - 'last'любое заполнение на последних временных этапах может отрицательно влиять на выход слоя. Для размещения или усечения данных последовательности слева установите 'SequencePaddingDirection' опция для 'left'.

Для сетей «последовательность-последовательность» (когда OutputMode свойство - 'sequence' для каждого уровня LSTM), любое заполнение в первых временных шагах может негативно влиять на прогнозы для более ранних временных шагов. Для добавления или усечения данных последовательности справа установите 'SequencePaddingDirection' опция для 'right'.

Дополнительные сведения об эффекте заполнения, усечения и разделения входных последовательностей см. в разделах Заполнение последовательности, усечение и разделение.

Значение, с помощью которого подаются входные последовательности, заданные как скаляр. Параметр допустим только в том случае, если SequenceLength является 'longest' или положительное целое число. Не устанавливать последовательности с NaN, поскольку это может распространять ошибки по всей сети.

Пример: 'SequencePaddingValue',-1

Выходные аргументы

свернуть все

Прогнозируемые метки классов, возвращаемые как категориальный вектор или клеточный массив категориальных векторов. Формат YPred зависит от типа задачи.

В следующей таблице описывается формат задач классификации.

ЗадачаФормат
Классификация изображений или элементовN-by-1 категориальный вектор меток, где N - число наблюдений.
Классификация «последовательность-метка»
Классификация последовательности к последовательности

N-by-1 клеточный массив категориальных последовательностей меток, где N - количество наблюдений. Каждая последовательность имеет то же количество временных шагов, что и соответствующая входная последовательность после применения SequenceLength опция для каждой мини-партии независимо.

Для задач классификации последовательности к последовательности с одним наблюдением, sequences может быть матрицей. В этом случае YPred - категориальная последовательность меток.

Прогнозируемые оценки или ответы, возвращаемые в виде матрицы или массива ячеек матриц. Формат scores зависит от типа задачи.

В следующей таблице описывается формат scores.

ЗадачаФормат
Классификация изображенийМатрица N-by-K, где N - количество наблюдений, а K - число классов
Классификация «последовательность-метка»
Классификация элементов
Классификация последовательности к последовательности

N-by-1 массив ячеек матриц, где N - количество наблюдений. Последовательности представляют собой матрицы с K строками, где K - количество классов. Каждая последовательность имеет то же количество временных шагов, что и соответствующая входная последовательность после применения SequenceLength опция для каждой мини-партии независимо.

Для задач классификации последовательности к последовательности с одним наблюдением, 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

Расширенные возможности

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