Прогнозируйте ответы с помощью обученной глубокой нейронной сети
Можно делать предсказания с помощью обученной нейронной сети для глубокого обучения на центральном процессоре или графическом процессоре. Для использования графический процессор требуется Parallel Computing Toolbox™ и поддерживаемый графический процессор. Для получения информации о поддерживаемых устройствах смотрите Поддержку GPU by Release (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
на центральном процессоре, использующем '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, обученная на наборе данных японских гласных, как описано в [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
- Image datastoreImageDatastore
объектImage datastore, заданный как ImageDatastore
объект.
ImageDatastore
позволяет пакетное чтение файлов изображений JPG или PNG с помощью предварительной выборки. Если вы используете пользовательскую функцию для чтения изображений, то ImageDatastore
не выполняет предварительную выборку.
Совет
Использовать augmentedImageDatastore
для эффективной предварительной обработки изображений для глубокого обучения, включая изменение размера изображений.
Не используйте readFcn
опция imageDatastore
для предварительной обработки или изменения размера, поскольку эта опция обычно значительно медленнее.
ds
- DatastoreDatastore для данной , которой не помещаютси в память, и предварительной обработки. 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} | ||
Множественный вход | Массив ячеек с по крайней мере Первый Порядок входов задается |
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 для глубокого обучения.
X
- Изображение или данные о функцияхИзображение или данные о функции, заданные как числовой массив. Размер массива зависит от типа входа:
Вход | Описание |
---|---|
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 - количество функций входных данных. |
Если массив содержит NaN
s, затем они распространяются через сеть.
Для сетей с несколькими входами можно задать несколько массивов X1
, …, XN
, где N
количество входов сети и входных Xi
соответствует входному параметру сети net.InputNames(i)
.
sequences
- Данные последовательности или временных рядовДанные последовательности или временных рядов, заданные как 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 должен вернуть данные как массив ячеек с последовательностями или таблицу, первый столбец которой содержит последовательности. Размерности данных последовательности должны соответствовать таблице выше.
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 и поддерживаемый графический процессор. Для получения информации о поддерживаемых устройствах смотрите Поддержку 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'
| 'cpu'
Аппаратный ресурс, заданный как разделенная разделенными запятой парами, состоящая из 'ExecutionEnvironment'
и одно из следующих:
'auto'
- Использовать графический процессор, если он доступен; в противном случае используйте центральный процессор.
'gpu'
- Использовать графический процессор. Для использования графический процессор требуется Parallel Computing Toolbox и поддерживаемый графический процессор. Для получения информации о поддерживаемых устройствах смотрите Поддержку GPU by Release (Parallel Computing Toolbox). Если Parallel Computing Toolbox или подходящий графический процессор недоступен, то программное обеспечение возвращает ошибку.
'cpu'
- Использовать центральный процессор.
Пример: 'ExecutionEnvironment','cpu'
'ReturnCategorical'
- Опция возврата категориальных метокfalse
(по умолчанию) | true
Опция для возврата категориальных меток, заданная как true
или false
.
Если ReturnCategorical
является true
, затем функция возвращает категориальные метки для выходных слоев классификации. В противном случае функция возвращает предсказание счетов для классификации выхода слоях.
'SequenceLength'
- Опция для заполнения, усечения или разделения входных последовательностей'longest'
(по умолчанию) | 'shortest'
| положительное целое числоОпция для заполнения, усечения или разделения входных последовательностей, заданная как одно из следующего:
'longest'
- Дополните последовательности в каждом мини-пакете, чтобы иметь ту же длину, что и самая длинная последовательность. Эта опция не отбрасывает никаких данных, хотя заполнение может ввести шум в сеть.
'shortest'
- обрезать последовательности в каждом мини-пакете так, чтобы они имели ту же длину, что и самая короткая последовательность. Эта опция гарантирует, что заполнение не будет добавлено, за счет отбрасывания данных.
Положительное целое число - для каждого мини-пакета дополните последовательности ближайшим кратным указанной длине, которая больше самой длинной длины последовательности в мини-пакете, и затем разделите последовательности на меньшие последовательности заданной длины. Если происходит разделение, то программное обеспечение создает дополнительные мини-пакеты. Используйте эту опцию, если полные последовательности не помещаются в памяти. Кроме того, попробуйте уменьшить количество последовательностей на мини-пакет, установив 'MiniBatchSize'
опция для более низкого значения.
Чтобы узнать больше об эффекте заполнения, усечения и разделения входа последовательностей, смотрите Sequence Padding, Truncation и Splitting.
Пример: 'SequenceLength','shortest'
'SequencePaddingDirection'
- Направление заполнения или усечения'right'
(по умолчанию) | 'left'
Направление заполнения или усечения, заданное как одно из следующего:
'right'
- Дополните или обрезайте последовательности справа. Последовательности начинаются с того же временного шага, а программное обеспечение обрезает или добавляет заполнение в конец последовательностей.
'left'
- Дополните или обрезайте последовательности слева. Программа обрезает или добавляет заполнение к началу последовательностей, так что последовательности заканчиваются на одном и том же временном шаге.
Потому что слои LSTM обрабатывают данные последовательности по одному временному шагу за раз, когда слой OutputMode
свойство 'last'
любое заполнение на последних временных шагах может отрицательно повлиять на выход слоя. Чтобы дополнить или обрезать данные последовательности слева, установите 'SequencePaddingDirection'
опция для 'left'
.
Для сетей от последовательности к последовательности (когда OutputMode
свойство 'sequence'
для каждого слоя LSTM), любое заполнение в первые временные шаги может негативно повлиять на предсказания для более ранних временных шагов. Чтобы дополнить или обрезать данные последовательности справа, установите 'SequencePaddingDirection'
опция для 'right'
.
Чтобы узнать больше об эффекте заполнения, усечения и разделения входа последовательностей, смотрите Sequence Padding, Truncation и Splitting.
'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 -by - R матрица, где N - количество последовательностей, а R - количество откликов. |
Регрессия от последовательности к последовательности | N ячеек -by-1 числовых последовательностей, где N количество последовательностей. Последовательности являются матрицами с R строками, где R количество откликов. Каждая последовательность имеет то же количество временных шагов, что и соответствующая входная последовательность после применения Для регрессионных задач от последовательности к последовательности с одним наблюдением, |
Регрессия функций | N -by - R матрица, где N - количество наблюдений, а R - количество откликов. |
Для задач регрессии от последовательности к последовательности с одним наблюдением, sequences
может быть матрицей. В этом случае YPred
является матрицей ответов.
Если данные изображения содержат NaN
s, predict
распространяет их через сеть. Если в сети есть слои ReLU, эти слои игнорируют NaN
s. Однако, если сеть не имеет слоя ReLU, то predict
возвращает NaNs как предсказания.
Когда вы обучаете сеть, используя trainNetwork
function, или когда вы используете функции предсказания или валидации с DAGNetwork
и SeriesNetwork
объекты, программное обеспечение выполняет эти расчеты с помощью арифметики с одной точностью и плавающей точкой. Функции для обучения, предсказания и валидации включают trainNetwork
, predict
, classify
, и activations
. Программа использует арифметику с одной точностью, когда вы обучаете сети, используя как центральные процессоры, так и графические процессоры.
Вы можете вычислить предсказанные счета и предсказанные классы из обученной сети, используя classify
.
Можно также вычислить активации из слоя сети, используя activations
.
Для сетей классификации «от последовательности до метки» и «от последовательности до последовательности» (для примера, сетей LSTM) можно выполнить предсказания и обновить состояние сети, используя classifyAndUpdateState
и predictAndUpdateState
.
[1] М. Кудо, Дж. Тояма и М. Симбо. «Многомерная классификация кривых с использованием областей». Распознавание Букв. Том 20, № 11-13, стр. 1103-1111.
[2] UCI Machine Learning Repository: Японский набор данных гласных. https://archive.ics.uci.edu/ml/datasets/Japanese+Vowels
Указания и ограничения по применению:
Генерация кода С++ поддерживает следующие синтаксисы:
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
аргументы имя-значение.
Для получения дополнительной информации о генерации кода для глубоких нейронных сетей, смотрите Рабочий процесс для генерации кода глубокого обучения с MATLAB Coder (MATLAB Coder).
Указания и ограничения по применению:
Генерация кода GPU поддерживает следующие синтаксисы:
YPred = predict(net,X)
[YPred1,...,YPredM] = predict(__)
YPred = predict(net,sequences)
__ = predict(__,Name,Value)
Область входа X
не должно иметь размера переменной. Размер должен быть фиксирован во время генерации кода.
Генерация кода GPU не поддерживает gpuArray
входы в систему predict
функция.
Библиотека cuDNN поддерживает векторные и 2-D последовательности изображений. Библиотека TensorRT поддерживает только векторные входные последовательности. РУКА®
Compute Library
для графический процессор не поддерживает регулярные сети.
Для входов векторной последовательности количество функций должно быть константой во время генерации кода. Длина последовательности может быть переменным размером.
Для входов последовательности изображений высота, ширина и количество каналов должны быть константой во время генерации кода.
Только 'MiniBatchSize'
, 'ReturnCategorical'
, 'SequenceLength'
, 'SequencePaddingDirection'
, и 'SequencePaddingValue'
для генерации кода поддерживаются аргументы пары "имя-значение". Все пары "имя-значение" должны быть константами времени компиляции.
Только 'longest'
и 'shortest'
опция 'SequenceLength'
для генерации кода поддерживается пара "имя-значение".
Генерация кода GPU для predict
функция поддерживает входы, которые заданы как типы данных с плавающей точкой половинной точности. Для получения дополнительной информации см. half
(Кодер графического процессора).
Если 'ReturnCategorical'
установлено в true
и вы используете компилятор GCC C/C + + версии 8.2 или выше, вы можете получить -Wstringop-overflow
предупреждение.
Когда входные данные являются gpuArray
, массив ячеек или таблица, содержащая gpuArray
данные, или datastore, который возвращает gpuArray
данные, "ExecutionEnvironment"
опция должен быть "auto"
или "gpu"
.
Для получения дополнительной информации смотрите Запуск функций MATLAB на графическом процессоре (Parallel Computing Toolbox).
activations
| classify
| classifyAndUpdateState
| predictAndUpdateState
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.