classify

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

Описание

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

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

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

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

пример

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

YPred = classify(net,X1,...,XN) предсказывает метки классов для данных в числовых массивах X1, …, XN для сети mutli-входов 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, обученная на наборе данных японских гласных, как описано в [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.

Image datastore, заданный как ImageDatastore объект.

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

Совет

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

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

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

Сетевая архитектураВыход DatastoreПример выхода
Один вход

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

Элементы таблицы должны быть скалярами, векторами-строками или массивами ячеек 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 w d 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 -by- d -by- c -by- s массив, где h, w, d и c соответствуют высоте, ширине, глубине и количеству каналов изображения, соответственно, и s является длиной последовательности.

Каждая последовательность в мини-пакете должна иметь одинаковую длину.

Функции

c вектор-на-1, где c количество функций.

Для получения дополнительной информации смотрите Datastores для глубокого обучения.

Изображение или данные о функции, заданные как числовой массив. Размер массива зависит от типа входа:

ВходОписание
2-D изображенияh w c N числовым массивом, где h, w, и c высота, ширина, и количество каналов изображений, соответственно, и N - количество изображений.
3-D изображения<reservedrangesplaceholder9>-by-<reservedrangesplaceholder8>-by-<reservedrangesplaceholder7>-by-<reservedrangesplaceholder6>-by-<reservedrangesplaceholder5> числовой массив, где h, w, d, и c высота, ширина, глубина, и количество каналов изображений, соответственно, и N, является количеством изображений.
ФункцииA N -by- numFeatures числовой массив, где N - количество наблюдений и numFeatures - количество функций входных данных.

Если массив содержит NaNs, затем они распространяются через сеть.

Для сетей с несколькими входами можно задать несколько массивов X1, …, XN, где N количество входов сети и входных Xi соответствует входному параметру сети net.InputNames(i).

Данные последовательности или временных рядов, заданные как N-на-1 массив ячеек числовых массивов, где N - количество наблюдений, числовой массив, представляющий одну последовательность или datastore.

Для массива ячеек или входа числовых массивов размерности числовых массивов, содержащих последовательности, зависят от типа данных.

ВходОписание
Векторные последовательностиc -by - s матрицы, где c - количество функций последовательностей, а s - длина последовательности.
2-D последовательности изображенийh -by- w -by- c -by- s массивы, где h, w и c соответствуют высоте, ширине и количеству каналов изображений, соответственно, и s является длиной последовательности.
3-D последовательности изображений<reservedrangesplaceholder9>-by-<reservedrangesplaceholder8>-by-<reservedrangesplaceholder7>-by-<reservedrangesplaceholder6>-by-<reservedrangesplaceholder5>, где h, w, d, и c соответствуют высоте, ширине, глубине, и количество каналов 3D изображений, соответственно, и s - длина последовательности.

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

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

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

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

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

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

Данные о функции

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

Задайте предикторы в первом numFeatures столбцы таблицы, где numFeatures - количество функций входных данных.

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

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

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

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

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

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

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

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

Оптимизация эффективности, заданная как разделенная разделенными запятой парами, состоящая из 'Acceleration' и одно из следующих:

  • 'auto' - Автоматически применить ряд оптимизаций, подходящих для входных сетевых и аппаратных ресурсов.

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

  • 'none' - Отключить все ускорения.

Опция по умолчанию 'auto'. Если 'auto' задано, MATLAB® применит несколько совместимых оптимизаций. Если вы используете 'auto' Опция никогда не генерирует MEX-функцию.

Использование 'Acceleration' опции 'auto' и 'mex' может предложить преимущества эффективности, но за счет увеличения начального времени запуска. Последующие вызовы с совместимыми параметрами выполняются быстрее. Используйте оптимизацию эффективности, когда вы планируете вызывать функцию несколько раз с помощью новых входных данных.

The 'mex' опция генерирует и выполняет MEX-функцию на основе сети и параметров, используемых в вызове функции. Одновременно с одной сетью можно связать несколько MEX-функции. Очистка сетевой переменной также очищает все MEX-функции, связанные с этой сетью.

The 'mex' опция доступна только при использовании графического процессора. Необходимо установить компилятор C/C + + и пакет поддержки GPU Coder™ Interface for Глубокое Обучение Libraries. Установите пакет поддержки с помощью Add-On Explorer в MATLAB. Инструкции по настройке см. в MEX Setup (GPU Coder). GPU Coder не требуется.

The 'mex' опция не поддерживает все слои. Список поддерживаемых слоев см. в разделе Поддерживаемые слои (GPU Coder). Рекуррентные нейронные сети (RNN), содержащие sequenceInputLayer не поддерживаются.

The 'mex' опция не поддерживает сети с несколькими входными слоями или несколькими выходными слоями.

Вы не можете использовать MATLAB Compiler™ для развертывания сети при использовании 'mex' опция.

Пример: 'Acceleration','mex'

Аппаратный ресурс, заданный как разделенная разделенными запятой парами, состоящая из 'ExecutionEnvironment' и одно из следующих:

  • 'auto' - Использовать графический процессор, если он доступен; в противном случае используйте центральный процессор.

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

  • 'cpu' - Использовать центральный процессор.

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

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

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

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

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

Чтобы узнать больше об эффекте заполнения, усечения и разделения входа последовательностей, смотрите Sequence Padding, Truncation и Splitting.

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

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

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

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

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

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

Чтобы узнать больше об эффекте заполнения, усечения и разделения входа последовательностей, смотрите Sequence Padding, Truncation и Splitting.

Значение, которым можно дополнить входные последовательности, заданное как скаляр. Опция действительна только при 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 function, или когда вы используете функции предсказания или валидации с DAGNetwork и SeriesNetwork объекты, программное обеспечение выполняет эти расчеты с помощью арифметики с одной точностью и плавающей точкой. Функции для обучения, предсказания и валидации включают trainNetwork, predict, classify, и activations. Программа использует арифметику с одной точностью, когда вы обучаете сети, используя как центральные процессоры, так и графические процессоры.

Альтернативы

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

Вы можете вычислить предсказанные счета из обученной сети, используя predict.

Можно также вычислить активации из слоя сети, используя activations.

Для сетей классификации «от последовательности до метки» и «от последовательности до последовательности» можно делать предсказания и обновлять состояние сети, используя classifyAndUpdateState и predictAndUpdateState.

Ссылки

[1] М. Кудо, Дж. Тояма и М. Симбо. «Многомерная классификация кривых с использованием областей». Распознавание Букв. Том 20, № 11-13, стр. 1103-1111.

[2] UCI Machine Learning Repository: Японский набор данных гласных. https://archive.ics.uci.edu/ml/datasets/Japanese+Vowels

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

..
Введенный в R2016a