classify

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

Описание

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

Для сетей с несколькими выходными параметрами используйте predict и набор 'ReturnCategorical' опция к 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 или сеть ГРУ) 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 5 000 массивов, где 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:02 |       50.78% |       1.7102 |          0.0100 |
|       3 |         100 |       00:00:03 |       63.28% |       1.1632 |          0.0100 |
|       4 |         150 |       00:00:05 |       60.16% |       1.0859 |          0.0100 |
|       6 |         200 |       00:00:07 |       68.75% |       0.8996 |          0.0100 |
|       7 |         250 |       00:00:08 |       76.56% |       0.7919 |          0.0100 |
|       8 |         300 |       00:00:10 |       73.44% |       0.8411 |          0.0100 |
|       9 |         350 |       00:00:12 |       81.25% |       0.5514 |          0.0100 |
|      11 |         400 |       00:00:13 |       90.62% |       0.4744 |          0.0100 |
|      12 |         450 |       00:00:15 |       92.19% |       0.3614 |          0.0100 |
|      13 |         500 |       00:00:17 |       94.53% |       0.3159 |          0.0100 |
|      15 |         550 |       00:00:18 |       96.09% |       0.2543 |          0.0100 |
|      16 |         600 |       00:00:20 |       92.19% |       0.2765 |          0.0100 |
|      17 |         650 |       00:00:21 |       95.31% |       0.2461 |          0.0100 |
|      18 |         700 |       00:00:23 |       99.22% |       0.1418 |          0.0100 |
|      20 |         750 |       00:00:25 |       98.44% |       0.1000 |          0.0100 |
|      21 |         800 |       00:00:27 |       98.44% |       0.1448 |          0.0100 |
|      22 |         850 |       00:00:28 |       98.44% |       0.0989 |          0.0100 |
|      24 |         900 |       00:00:30 |       96.88% |       0.1316 |          0.0100 |
|      25 |         950 |       00:00:32 |      100.00% |       0.0859 |          0.0100 |
|      26 |        1000 |       00:00:34 |      100.00% |       0.0701 |          0.0100 |
|      27 |        1050 |       00:00:36 |      100.00% |       0.0759 |          0.0100 |
|      29 |        1100 |       00:00:38 |       99.22% |       0.0663 |          0.0100 |
|      30 |        1150 |       00:00:39 |       98.44% |       0.0775 |          0.0100 |
|      30 |        1170 |       00:00:40 |       99.22% |       0.0732 |          0.0100 |
|========================================================================================|
Training finished: Max epochs completed.

Запустите обучивший сеть на наборе тестов.

[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

Предварительно обученная сеть Load. 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.

Отобразите 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}

Формат предикторов зависит от типа данных.

ДанныеФормат предикторов
2D изображение

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, является длиной последовательности.

1D последовательность изображений

h-by-c-by-s массив, где h и c соответствуют высоте и количеству каналов изображения, соответственно, и s, является длиной последовательности.

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

2D последовательность изображений

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-by-1 вектор-столбец, где c является количеством функций.

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

Отобразите или покажите данные в виде числового массива. Размер массива зависит от типа входа:

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

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

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

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

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

Входной параметрОписание
Векторные последовательностиc-by-s матрицы, где c является количеством функций последовательностей и s, является длиной последовательности.
1D последовательности изображенийh-by-c-by-s массивы, где h и c соответствуют высоте и количеству каналов изображений, соответственно, и s, является длиной последовательности.
2D последовательности изображений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 соответствуют высоте, ширине, глубине, и количеству каналов 3-D изображений, соответственно, и s, является длиной последовательности.

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

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

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

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

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

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

Покажите данные

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

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

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

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

Аргументы name-value

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

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

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

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

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

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

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

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

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

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

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

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

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

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

'mex' опция не поддерживает все слои. Для списка поддерживаемых слоев смотрите Поддерживаемые Слои (GPU Coder). Только сети с imageInputLayer поддерживаются.

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

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

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

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

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

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

  • 'multi-gpu' — Используйте несколько графических процессоров на одной машине, с помощью локального параллельного пула на основе кластерного профиля по умолчанию. Если нет никакого текущего параллельного пула, программное обеспечение начинает параллельный пул с размера пула, равного количеству доступных графических процессоров.

  • 'parallel' — Используйте локальный или удаленный параллельный пул на основе своего кластерного профиля по умолчанию. Если нет никакого текущего параллельного пула, программное обеспечение запускает тот с помощью кластерного профиля по умолчанию. Если пул имеет доступ к графическим процессорам, то только рабочие с помощью уникального графического процессора выполняют расчет. Если пул не имеет графических процессоров, то расчет происходит на всех доступных рабочих центрального процессора вместо этого.

Для получения дополнительной информации о том, когда использовать различные среды выполнения, смотрите, Увеличивают Глубокое обучение параллельно, на графических процессорах, и в Облаке.

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

'multi-gpu' и 'parallel' опции не поддерживают рекуррентные нейронные сети (RNNs), содержащий lstmLayer, bilstmLayer, или gruLayer объекты.

Пример: '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 функция и набор 'ReturnCategorical' опция к true.

Можно вычислить предсказанные баллы из обучившего сеть использования predict.

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

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

Ссылки

[1] М. Кудо, J. Тояма, и М. Шимбо. "Многомерная Классификация Кривых Используя Прохождение через области". Буквы Распознавания образов. Издание 20, № 11-13, страницы 1103-1111.

[2] Репозиторий Машинного обучения UCI: японский Набор данных Гласных. https://archive.ics.uci.edu/ml/datasets/Japanese+Vowels

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

Введенный в R2016a