Прогнозирование ответов с использованием обученной нейронной сети глубокого обучения
Вы можете делать прогнозы, используя обученную нейронную сеть для глубокого обучения на CPU или GPU. Для использования графического процессора требуется Toolbox™ параллельных вычислений и поддерживаемое устройство графического процессора. Сведения о поддерживаемых устройствах см. в разделе Поддержка графического процессора по выпуску (Parallel Computing Toolbox). Укажите требования к оборудованию с помощью ExecutionEnvironment аргумент пары имя-значение.
[YPred1,...,YPredM] = predict(___) предсказывает ответы для M выходы многовыходной сети с использованием любого из предыдущих синтаксисов. Продукция YPredj соответствует сетевому выходу net.OutputNames(j). Для возврата категориальных выходных уровней классификации установите значение 'ReturnCategorical' опция для true.
___ = predict(___, предсказывает ответы с дополнительными параметрами, заданными одним или несколькими аргументами пары имя-значение.Name,Value)
Совет
При составлении прогнозов с последовательностями различной длины размер мини-партии может влиять на количество дополнений, добавляемых к входным данным, что может привести к различным прогнозируемым значениям. Попробуйте использовать различные значения, чтобы увидеть, что лучше всего подходит для вашей сети. Чтобы указать размер мини-пакета и параметры заполнения, используйте '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:12 | 68.75% | 0.8997 | 0.0100 | | 7 | 250 | 00:00:16 | 76.56% | 0.7919 | 0.0100 | | 8 | 300 | 00:00:20 | 73.44% | 0.8411 | 0.0100 | | 9 | 350 | 00:00:23 | 81.25% | 0.5512 | 0.0100 | | 11 | 400 | 00:00:27 | 89.84% | 0.4745 | 0.0100 | | 12 | 450 | 00:00:31 | 92.19% | 0.3614 | 0.0100 | | 13 | 500 | 00:00:34 | 94.53% | 0.3160 | 0.0100 | | 15 | 550 | 00:00:38 | 96.09% | 0.2543 | 0.0100 | | 16 | 600 | 00:00:41 | 92.19% | 0.2765 | 0.0100 | | 17 | 650 | 00:00:45 | 95.31% | 0.2460 | 0.0100 | | 18 | 700 | 00:00:48 | 99.22% | 0.1419 | 0.0100 | | 20 | 750 | 00:00:52 | 98.44% | 0.1000 | 0.0100 | | 21 | 800 | 00:00:55 | 98.44% | 0.1449 | 0.0100 | | 22 | 850 | 00:00:58 | 98.44% | 0.0989 | 0.0100 | | 24 | 900 | 00:01:02 | 96.88% | 0.1315 | 0.0100 | | 25 | 950 | 00:01:06 | 100.00% | 0.0859 | 0.0100 | | 26 | 1000 | 00:01:09 | 100.00% | 0.0701 | 0.0100 | | 27 | 1050 | 00:01:13 | 100.00% | 0.0759 | 0.0100 | | 29 | 1100 | 00:01:17 | 99.22% | 0.0663 | 0.0100 | | 30 | 1150 | 00:01:21 | 98.44% | 0.0776 | 0.0100 | | 30 | 1170 | 00:01:22 | 99.22% | 0.0731 | 0.0100 | |========================================================================================|
Запустите обученную сеть на тестовом наборе и спрогнозируйте результаты.
[XTest,YTest] = digitTest4DArrayData; YPred = predict(net,XTest);
predictпо умолчанию использует графический процессор CUDA ® с возможностью вычислений 3.0, если он доступен. Можно также выбрать запуск predict на CPU с использованием 'ExecutionEnvironment','cpu' аргумент пары имя-значение.
Отображение первых 10 изображений в тестовых данных и сравнение с прогнозами из predict.
YTest(1:10,:)
ans = 10x1 categorical
0
0
0
0
0
0
0
0
0
0
YPred(1:10,:)
ans = 10x10 single matrix
0.9978 0.0001 0.0008 0.0002 0.0003 0.0000 0.0004 0.0000 0.0002 0.0003
0.8878 0.0000 0.0476 0.0001 0.0000 0.0002 0.0029 0.0001 0.0014 0.0599
0.9998 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0001
0.9814 0.0000 0.0000 0.0000 0.0000 0.0000 0.0046 0.0000 0.0011 0.0129
0.9746 0.0000 0.0134 0.0003 0.0000 0.0000 0.0002 0.0004 0.0111 0.0001
0.9873 0.0000 0.0001 0.0000 0.0000 0.0000 0.0007 0.0000 0.0072 0.0046
0.9981 0.0000 0.0000 0.0000 0.0000 0.0000 0.0019 0.0000 0.0000 0.0000
1.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
0.9265 0.0000 0.0046 0.0000 0.0006 0.0009 0.0001 0.0000 0.0018 0.0655
0.9327 0.0000 0.0140 0.0012 0.0001 0.0001 0.0378 0.0000 0.0111 0.0031
YTest содержит цифры, соответствующие изображениям в XTest. Столбцы YPred содержать predict«Оценка вероятности того, что изображение содержит определенную цифру». То есть первый столбец содержит оценку вероятности того, что данное изображение является цифрой 0, второй столбец содержит оценку вероятности того, что изображение является цифрой 1, третий столбец содержит оценку вероятности того, что изображение является цифрой 2, и так далее. Вы можете видеть, что predictОценка вероятностей для правильных цифр составляет почти 1, а вероятность для любой другой цифры - почти 0. predict правильно оценивает первые 10 наблюдений как цифру 0.
Загрузить предварительно обученную сеть. 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 = predict(net,XTest);
Просмотрите оценки прогноза для первых 10 последовательностей.
YPred(1:10,:)
ans = 10x9 single matrix
0.9918 0.0000 0.0000 0.0000 0.0006 0.0010 0.0001 0.0006 0.0059
0.9868 0.0000 0.0000 0.0000 0.0006 0.0010 0.0001 0.0010 0.0105
0.9924 0.0000 0.0000 0.0000 0.0006 0.0010 0.0001 0.0006 0.0054
0.9896 0.0000 0.0000 0.0000 0.0006 0.0009 0.0001 0.0007 0.0080
0.9965 0.0000 0.0000 0.0000 0.0007 0.0009 0.0000 0.0003 0.0016
0.9888 0.0000 0.0000 0.0000 0.0006 0.0010 0.0001 0.0008 0.0087
0.9886 0.0000 0.0000 0.0000 0.0006 0.0010 0.0001 0.0008 0.0089
0.9982 0.0000 0.0000 0.0000 0.0006 0.0007 0.0000 0.0001 0.0004
0.9883 0.0000 0.0000 0.0000 0.0006 0.0010 0.0001 0.0008 0.0093
0.9959 0.0000 0.0000 0.0000 0.0007 0.0011 0.0000 0.0004 0.0019
Сравните эти оценки прогнозирования с метками этих последовательностей. Функция присваивает высокие оценки прогнозирования правильному классу.
YTest(1:10)
ans = 10x1 categorical
1
1
1
1
1
1
1
1
1
1
net - Обученная сетьSeriesNetwork объект | DAGNetwork объектОбученная сеть, указанная как SeriesNetwork или DAGNetwork объект. Обученную сеть можно получить путем импорта предварительно обученной сети (например, с помощью googlenet функция) или обучая собственную сеть с помощью trainNetwork.
imds - Хранилище данных образаImageDatastore объектХранилище данных изображения, указанное как ImageDatastore объект.
ImageDatastore позволяет выполнять пакетное чтение файлов изображений JPG или PNG с помощью предварительной выборки. Если для чтения изображений используется пользовательская функция, то ImageDatastore не выполняет предварительную выборку.
Совет
Использовать augmentedImageDatastore для эффективной предварительной обработки изображений для глубокого обучения, включая изменение размеров изображений.
Не используйте readFcn вариант imageDatastore для предварительной обработки или изменения размера, поскольку этот параметр обычно значительно медленнее.
ds - Хранилище данныхХранилище данных для данных из памяти и предварительной обработки. Хранилище данных должно возвращать данные в таблице или массиве ячеек. Формат выходных данных хранилища данных зависит от архитектуры сети.
| Сетевая архитектура | Выходные данные хранилища данных | Пример вывода |
|---|---|---|
| Одиночный вход | Таблица или массив ячеек, где первый столбец определяет предикторы. Элементы таблицы должны быть скалярами, векторами строк или массивами ячеек 1 на 1, содержащими числовой массив. Пользовательские хранилища данных должны выводить таблицы. |
data = read(ds) data =
4×1 table
Predictors
__________________
{224×224×3 double}
{224×224×3 double}
{224×224×3 double}
{224×224×3 double}
|
data = read(ds) data =
4×1 cell array
{224×224×3 double}
{224×224×3 double}
{224×224×3 double}
{224×224×3 double} | ||
| Множественный вход | Массив ячеек по крайней мере с Первое Порядок входных данных задается |
data = read(ds) data =
4×2 cell array
{224×224×3 double} {128×128×3 double}
{224×224×3 double} {128×128×3 double}
{224×224×3 double} {128×128×3 double}
{224×224×3 double} {128×128×3 double} |
Формат предикторов зависит от типа данных.
| Данные | Формат предикторов |
|---|---|
| 2-D изображение | h-by-w-by-c числовой массив, где h, w и c - высота, ширина и количество каналов изображения соответственно. |
| 3-D изображение | h-by-w-by-d-by-c числовой массив, где h, w, d и c - высота, ширина, глубина и количество каналов изображения соответственно. |
| Векторная последовательность | матрица c-by-s, где c - число признаков последовательности, а s - длина последовательности. |
| 2-D последовательность изображений | h-by-w-by-c-by-s массив, где h, w и c соответствуют высоте, ширине и количеству каналов изображения соответственно, а s - длина последовательности. Каждая последовательность в мини-партии должна иметь одинаковую длину. |
| 3-D последовательность изображений | h-by-w-d-by-c-by-s массив, где h, w, d и c соответствуют высоте, ширине, глубине и количеству каналов изображения, соответственно, и s - длина последовательности. Каждая последовательность в мини-партии должна иметь одинаковую длину. |
| Особенности | вектор столбца c-by-1, где c - количество элементов. |
Дополнительные сведения см. в разделе Хранилища данных для глубокого обучения.
X - Данные изображения или элементаДанные изображения или элемента, заданные как числовой массив. Размер массива зависит от типа ввода:
| Вход | Описание |
|---|---|
| 2-D изображения | Числовой массив h-by-w-by-c-by-N, где h, w и c - высота, ширина и количество каналов изображений соответственно, а N - количество изображений. |
| 3-D изображения | Числовой массив h-by-d-by-c-by-N, где h, w, d и c - высота, ширина, глубина и количество каналов изображений соответственно, а N - количество изображений. |
| Особенности | A N-by-numFeatures числовой массив, где N - количество наблюдений и numFeatures - количество признаков входных данных. |
Если массив содержит NaNs, затем они распространяются по сети.
Для сетей с несколькими входами можно указать несколько массивов X1, …, XN, где N - количество сетевых входов и входов Xi соответствует сетевому входу net.InputNames(i).
sequences - Данные последовательности или временных рядовДанные последовательности или временного ряда, заданные как массив N-by-1 ячеек числовых массивов, где N - количество наблюдений, числовой массив, представляющий одну последовательность, или хранилище данных.
Для ввода массива ячеек или числового массива размеры числовых массивов, содержащих последовательности, зависят от типа данных.
| Вход | Описание |
|---|---|
| Векторные последовательности | матрицы c-by-s, где c - число признаков последовательностей, а s - длина последовательности. |
| 2-D последовательности изображений | массивы h-by-w-by-s, где h, w и c соответствуют высоте, ширине и количеству каналов изображений, соответственно, и s - длина последовательности. |
| 3-D последовательности изображений | h-by-w-d-by-c-by-s, где h, w, d и c соответствуют высоте, ширине, глубине и количеству каналов 3-D изображений, соответственно, и s - длина последовательности. |
Для входа хранилища данных хранилище данных должно возвратить данные как множество клетки последовательностей или стола, первая колонка которого содержит последовательности. Размеры данных последовательности должны соответствовать приведенной выше таблице.
tbl - Таблица данных изображения или элементаtable
Таблица данных изображения или элемента. Каждая строка в таблице соответствует наблюдению.
Расположение предикторов в столбцах таблицы зависит от типа входных данных.
| Вход | Предсказатели |
|---|---|
| Данные изображения |
Укажите предикторы в одном столбце. |
| Данные о характеристиках | Числовой скаляр. Укажите предикторы в первом |
Этот аргумент поддерживает сети только с одним входом.
Типы данных: table
'MiniBatchSize',256 задает размер мини-партии как 256.Укажите необязательную пару, разделенную запятыми Name,Value аргумент. Name является именем аргумента и Value - соответствующее значение. Name должно отображаться внутри отдельных кавычек (' ').
'MiniBatchSize' - Размер мини-партийРазмер мини-пакетов, используемых для прогнозирования, задается как положительное целое число. Большие размеры мини-партии требуют больше памяти, но могут привести к более быстрым прогнозам.
При составлении прогнозов с последовательностями различной длины размер мини-партии может влиять на количество дополнений, добавляемых к входным данным, что может привести к различным прогнозируемым значениям. Попробуйте использовать различные значения, чтобы увидеть, что лучше всего подходит для вашей сети. Чтобы указать размер мини-пакета и параметры заполнения, используйте 'MiniBatchSize' и 'SequenceLength' соответственно.
Пример: 'MiniBatchSize',256
'Acceleration' - Оптимизация производительности'auto' (по умолчанию) | 'mex' | 'none'Оптимизация производительности, указанная как пара, разделенная запятыми, состоящая из 'Acceleration' и одно из следующих:
'auto' - Автоматически применять ряд оптимизаций, подходящих для входной сети и аппаратных ресурсов.
'mex' - Компиляция и выполнение функции MEX. Эта опция доступна только при использовании графического процессора. Для использования графического процессора требуется панель параллельных вычислений и поддерживаемое устройство графического процессора. Сведения о поддерживаемых устройствах см. в разделе Поддержка графического процессора по выпуску (Parallel Computing Toolbox). Если панель инструментов Parallel Computing Toolbox или подходящий графический процессор недоступны, программа возвращает ошибку.
'none' - Отключить все ускорения.
Параметр по умолчанию: 'auto'. Если 'auto' указано, MATLAB ® применит ряд совместимых оптимизаций. Если вы используете 'auto' , MATLAB никогда не генерирует функцию MEX.
Использование 'Acceleration' варианты 'auto' и 'mex' может обеспечить преимущества производительности, но за счет увеличенного начального времени выполнения. Последующие вызовы с совместимыми параметрами выполняются быстрее. Оптимизация производительности используется при планировании многократного вызова функции с использованием новых входных данных.
'mex' генерирует и выполняет функцию MEX на основе сети и параметров, используемых в вызове функции. Вы можете иметь несколько функций MEX, связанных с одной сетью одновременно. При сбросе сетевой переменной также удаляются все функции MEX, связанные с этой сетью.
'mex' доступна только при использовании графического процессора. Необходимо установить компилятор C/C + + и пакет поддержки GPU Coder™ Interface for Deep Learning Libraries. Установите пакет поддержки с помощью проводника Add-On в MATLAB. Инструкции по установке см. в разделе Настройка MEX (кодер графического процессора). Кодер графического процессора не требуется.
'mex' не поддерживает все слои. Список поддерживаемых слоев см. в разделе Поддерживаемые слои (кодер графического процессора). Рецидивирующие нейронные сети (RNN), содержащие sequenceInputLayer не поддерживаются.
'mex' не поддерживает сети с несколькими входными слоями или с несколькими выходными слоями.
Нельзя использовать MATLAB Compiler™ для развертывания сети при использовании 'mex' вариант.
Пример: 'Acceleration','mex'
'ExecutionEnvironment' - Аппаратный ресурс'auto' (по умолчанию) | 'gpu' | 'cpu'Аппаратный ресурс, указанный как разделенная запятыми пара, состоящая из 'ExecutionEnvironment' и одно из следующих:
'auto' - использовать графический процессор, если он доступен; в противном случае используйте CPU.
'gpu' - Использовать графический процессор. Для использования графического процессора требуется панель параллельных вычислений и поддерживаемое устройство графического процессора. Сведения о поддерживаемых устройствах см. в разделе Поддержка графического процессора по выпуску (Parallel Computing Toolbox). Если панель инструментов Parallel Computing Toolbox или подходящий графический процессор недоступны, программа возвращает ошибку.
'cpu' - Использовать ЦП.
Пример: 'ExecutionEnvironment','cpu'
'ReturnCategorical' - Возможность возврата категориальных метокfalse (по умолчанию) | trueПараметр для возврата категориальных меток, указанных как true или false.
Если ReturnCategorical является true, то функция возвращает категориальные метки для классификационных выходных слоев. В противном случае функция возвращает оценки прогнозирования для выходных уровней классификации.
'SequenceLength' - Опция для вставки, усечения или разделения входных последовательностей'longest' (по умолчанию) | 'shortest' | положительное целое числоОпция для вставки, усечения или разделения входных последовательностей, заданная как одна из следующих:
'longest' - Последовательности прокладок в каждой мини-партии должны иметь ту же длину, что и самая длинная последовательность. Этот параметр не отбрасывает данные, хотя заполнение может вызвать шум в сети.
'shortest' - Усечение последовательностей в каждой мини-партии до такой же длины, что и самая короткая последовательность. Этот параметр обеспечивает отсутствие добавления дополнений за счет отбрасывания данных.
Положительное целое число - для каждой мини-партии поместите последовательности в ближайшую кратную указанную длину, которая больше, чем самая длинная длина последовательности в мини-партии, а затем разбейте последовательности на меньшие последовательности указанной длины. Если происходит разделение, программа создает дополнительные мини-пакеты. Используйте эту опцию, если полные последовательности не помещаются в память. Либо попробуйте уменьшить количество последовательностей на мини-пакет, установив 'MiniBatchSize' для более низкого значения.
Дополнительные сведения об эффекте заполнения, усечения и разделения входных последовательностей см. в разделах Заполнение последовательности, усечение и разделение.
Пример: 'SequenceLength','shortest'
'SequencePaddingDirection' - Направление заполнения или усечения'right' (по умолчанию) | 'left'Направление заполнения или усечения, указанное как одно из следующих:
'right' - Последовательность подушек или усечений справа. Последовательности начинаются на одном и том же этапе, и программное обеспечение усекает или добавляет дополнение к концу последовательностей.
'left' - Последовательность подушек или усечений слева. Программное обеспечение усекает или добавляет дополнение к началу последовательностей, так что последовательности заканчиваются на одном и том же шаге времени.
Поскольку уровни LSTM обрабатывают данные последовательности один раз за раз, когда уровень OutputMode свойство - 'last'любое заполнение на последних временных этапах может отрицательно влиять на выход слоя. Для размещения или усечения данных последовательности слева установите 'SequencePaddingDirection' опция для 'left'.
Для сетей «последовательность-последовательность» (когда OutputMode свойство - 'sequence' для каждого уровня LSTM), любое заполнение в первых временных шагах может негативно влиять на прогнозы для более ранних временных шагов. Для добавления или усечения данных последовательности справа установите 'SequencePaddingDirection' опция для 'right'.
Дополнительные сведения об эффекте заполнения, усечения и разделения входных последовательностей см. в разделах Заполнение последовательности, усечение и разделение.
'SequencePaddingValue' - Значения для входных последовательностей площадкиЗначение, с помощью которого подаются входные последовательности, заданные как скаляр. Параметр допустим только в том случае, если SequenceLength является 'longest' или положительное целое число. Не устанавливать последовательности с NaN, поскольку это может распространять ошибки по всей сети.
Пример: 'SequencePaddingValue',-1
YPred - Прогнозируемые оценки или ответыПрогнозируемые оценки или ответы, возвращаемые в виде матрицы, 4-D числового массива или массива ячеек матриц. Формат YPred зависит от типа проблемы.
В следующей таблице описывается формат проблем классификации.
| Задача | Формат |
|---|---|
| Классификация изображений | Матрица N-by-K, где N - количество наблюдений, а K - число классов |
| Классификация «последовательность-метка» | |
| Классификация элементов | |
| Классификация последовательности к последовательности | N-by-1 массив ячеек матриц, где N - количество наблюдений. Последовательности представляют собой матрицы с K строками, где K - количество классов. Каждая последовательность имеет то же количество временных шагов, что и соответствующая входная последовательность после применения |
В следующей таблице описывается формат для проблем регрессии.
| Задача | Формат |
|---|---|
| 2-D регрессия изображения |
|
| 3-D регрессия изображения |
|
| Регрессия «последовательность к одному» | Матрица N-по-R, где N - число последовательностей, а R - число откликов. |
| Регрессия последовательности к последовательности | N-by-1 массив ячеек числовых последовательностей, где N - количество последовательностей. Последовательности представляют собой матрицы с R строками, где R - количество откликов. Каждая последовательность имеет то же количество временных шагов, что и соответствующая входная последовательность после применения Для задач регрессии последовательности к последовательности с одним наблюдением, |
| Регрессия элемента | Матрица N-по-R, где N - количество наблюдений, а R - количество откликов. |
Для проблем регрессии последовательности к последовательности с одним наблюдением, sequences может быть матрицей. В этом случае YPred является матрицей откликов.
Если данные изображения содержат NaNs, predict распространяет их по сети. Если в сети имеются уровни ReLU, эти уровни игнорируются NaNс. Однако если сеть не имеет уровня ReLU, то predict возвращает NaNs в качестве прогнозов.
При обучении сети с помощью trainNetwork функция или при использовании функций прогнозирования или проверки с DAGNetwork и SeriesNetwork объекты, программное обеспечение выполняет эти вычисления, используя арифметику с одной точностью и плавающей запятой. Функции обучения, прогнозирования и проверки включают trainNetwork, predict, classify, и activations. Программа использует арифметику с одинарной точностью при обучении сетей с использованием процессоров и графических процессоров.
Можно вычислить прогнозируемые баллы и прогнозируемые классы из обученной сети с помощью classify.
Можно также вычислить активации с сетевого уровня с помощью activations.
Для сетей классификации «последовательность-метка» и «последовательность-последовательность» (например, сетей LSTM) можно делать прогнозы и обновлять состояние сети с помощью classifyAndUpdateState и predictAndUpdateState.
[1] М. Кудо, Дж. Тояма и М. Симбо. «Многомерная классификация кривых с использованием сквозных областей». Буквы распознавания образов. т. 20, № 11-13, стр. 1103-1111.
[2] Хранилище машинного обучения UCI: набор данных гласных на японском языке. https://archive.ics.uci.edu/ml/datasets/Japanese+Vowels
Примечания и ограничения по использованию:
Генерация кода C++ поддерживает следующие синтаксисы:
YPred = predict(net,X)
[YPred1,...,YPredM] = predict(__)
YPred = predict(net,sequences)
__ = predict(__,Name,Value)
Вход X не должен иметь переменный размер. Размер должен быть фиксированным во время создания кода.
Для входов векторной последовательности число элементов должно быть константой во время генерации кода. Длина последовательности может быть переменной.
Для входных данных последовательности изображений высота, ширина и количество каналов должны быть постоянными во время генерации кода.
Только 'MiniBatchSize', 'ReturnCategorical', 'SequenceLength', 'SequencePaddingDirection', и 'SequencePaddingValue' для создания кода поддерживаются аргументы пары имя-значение. Все пары имя-значение должны быть константами времени компиляции.
Только 'longest' и 'shortest' вариант 'SequenceLength' для создания кода поддерживается пара имя-значение.
Если 'ReturnCategorical' имеет значение true и вы используете компилятор GCC C/C + + версии 8.2 или выше, вы можете получить -Wstringop-overflow предупреждение.
Создание кода для целевого устройства Intel ® MKL-DNN не поддерживает комбинацию 'SequenceLength','longest', 'SequencePaddingDirection','left', и 'SequencePaddingValue',0 аргументы «имя-значение».
Дополнительные сведения о создании кода для нейронных сетей глубокого обучения см. в разделе Workflow for Deep Learning Code Generation with MATLAB Coder (Кодер MATLAB).
Примечания и ограничения по использованию:
Генерация кода графического процессора поддерживает следующие синтаксисы:
YPred = predict(net,X)
[YPred1,...,YPredM] = predict(__)
YPred = predict(net,sequences)
__ = predict(__,Name,Value)
Вход X не должен иметь переменный размер. Размер должен быть фиксированным во время создания кода.
Генерация кода графического процессора не поддерживает gpuArray входные данные для predict функция.
Библиотека cuDNN поддерживает векторные и 2-D последовательности изображений. Библиотека TensorRT поддерживает только векторные входные последовательности. ARM
®Compute Library для GPU не поддерживает повторяющиеся сети.
Для входов векторной последовательности число элементов должно быть константой во время генерации кода. Длина последовательности может быть переменной.
Для входных данных последовательности изображений высота, ширина и количество каналов должны быть постоянными во время генерации кода.
Только 'MiniBatchSize', 'ReturnCategorical', 'SequenceLength', 'SequencePaddingDirection', и 'SequencePaddingValue' для создания кода поддерживаются аргументы пары имя-значение. Все пары имя-значение должны быть константами времени компиляции.
Только 'longest' и 'shortest' вариант 'SequenceLength' для создания кода поддерживается пара имя-значение.
Генерация кода графического процессора для predict функция поддерживает входные данные, определенные как типы данных с плавающей запятой с полуточностью. Дополнительные сведения см. в разделе half (Кодер графического процессора).
Если 'ReturnCategorical' имеет значение true и вы используете компилятор GCC C/C + + версии 8.2 или выше, вы можете получить -Wstringop-overflow предупреждение.
Когда входные данные являются gpuArray, массив ячеек или таблица, содержащая gpuArray данные или хранилище данных, которое возвращает gpuArray данные, "ExecutionEnvironment" параметр должен быть "auto" или "gpu".
Дополнительные сведения см. в разделе Запуск функций MATLAB на графическом процессоре (панель инструментов параллельных вычислений).
activations | classify | classifyAndUpdateState | predictAndUpdateState
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.