Предскажите ответы с помощью обученной глубокой нейронной сети
Можно сделать прогнозы с помощью обученной нейронной сети для глубокого обучения или на центральном процессоре или на графическом процессоре. Используя графический процессор требует Parallel Computing Toolbox™, и CUDA® включил NVIDIA®, графический процессор с вычисляет возможность 3.0 или выше. Задайте требования к аппаратным средствам с помощью аргумента пары "имя-значение" ExecutionEnvironment
.
YPred = predict(net,X)
YPred = predict(net,sequences)
YPred = predict(___,Name,Value)
предсказывает ответы с дополнительными опциями, заданными одним или несколькими аргументами пары "имя-значение".YPred
= predict(___,Name,Value
)
При создании прогнозов с последовательностями различных длин мини-пакетный размер может повлиять на объем дополнения добавленного к входным данным, которые могут привести к различным ожидаемым значениям. Попытайтесь использовать различные значения, чтобы видеть, который работает лучше всего с вашей сетью. Чтобы задать мини-пакетный размер и дополнительные опции, используйте опции 'SequenceLength'
и 'MiniBatchSize'
.
Загрузите выборочные данные.
[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 | 11.72% | 2.2909 | 0.0100 | | 2 | 50 | 00:00:01 | 52.34% | 1.8173 | 0.0100 | | 3 | 100 | 00:00:03 | 66.41% | 1.1120 | 0.0100 | | 4 | 150 | 00:00:05 | 67.19% | 0.9866 | 0.0100 | | 6 | 200 | 00:00:06 | 73.44% | 0.7928 | 0.0100 | | 7 | 250 | 00:00:08 | 81.25% | 0.6349 | 0.0100 | | 8 | 300 | 00:00:09 | 83.59% | 0.6307 | 0.0100 | | 9 | 350 | 00:00:11 | 83.59% | 0.4726 | 0.0100 | | 11 | 400 | 00:00:12 | 92.97% | 0.3709 | 0.0100 | | 12 | 450 | 00:00:14 | 95.31% | 0.2842 | 0.0100 | | 13 | 500 | 00:00:16 | 92.19% | 0.2760 | 0.0100 | | 15 | 550 | 00:00:17 | 98.44% | 0.2186 | 0.0100 | | 16 | 600 | 00:00:19 | 96.88% | 0.2164 | 0.0100 | | 17 | 650 | 00:00:20 | 96.88% | 0.1960 | 0.0100 | | 18 | 700 | 00:00:22 | 100.00% | 0.1066 | 0.0100 | | 20 | 750 | 00:00:23 | 99.22% | 0.0850 | 0.0100 | | 21 | 800 | 00:00:25 | 99.22% | 0.1224 | 0.0100 | | 22 | 850 | 00:00:26 | 99.22% | 0.0832 | 0.0100 | | 24 | 900 | 00:00:28 | 97.66% | 0.1246 | 0.0100 | | 25 | 950 | 00:00:29 | 98.44% | 0.0821 | 0.0100 | | 26 | 1000 | 00:00:31 | 99.22% | 0.0601 | 0.0100 | | 27 | 1050 | 00:00:32 | 99.22% | 0.0679 | 0.0100 | | 29 | 1100 | 00:00:34 | 99.22% | 0.0519 | 0.0100 | | 30 | 1150 | 00:00:35 | 99.22% | 0.0590 | 0.0100 | | 30 | 1170 | 00:00:36 | 100.00% | 0.0578 | 0.0100 | |========================================================================================|
Запустите обучивший сеть на наборе тестов и предскажите очки.
[XTest,YTest] = digitTest4DArrayData; YPred = predict(net,XTest);
predict
, по умолчанию, использует CUDA®, включенный графический процессор с, вычисляют возможность 3.0, когда доступно. Можно также принять решение запустить predict
на центральном процессоре с помощью аргумента пары "имя-значение" 'ExecutionEnvironment','cpu'
.
Отобразите первые 10 изображений в тестовых данных и сравните с прогнозами от predict
.
YTest(1:10,:)
ans = 10x1 categorical array
0
0
0
0
0
0
0
0
0
0
YPred(1:10,:)
ans = 10x10 single matrix
0.9988 0.0000 0.0002 0.0006 0.0000 0.0000 0.0000 0.0000 0.0000 0.0004
0.9188 0.0000 0.0206 0.0001 0.0000 0.0002 0.0030 0.0001 0.0017 0.0554
0.9999 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
0.9705 0.0000 0.0000 0.0000 0.0000 0.0000 0.0037 0.0000 0.0029 0.0229
0.9775 0.0000 0.0036 0.0001 0.0000 0.0000 0.0001 0.0001 0.0186 0.0001
0.9708 0.0000 0.0004 0.0000 0.0000 0.0000 0.0028 0.0000 0.0245 0.0015
0.9921 0.0000 0.0001 0.0000 0.0000 0.0000 0.0075 0.0000 0.0004 0.0000
1.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
0.9594 0.0000 0.0004 0.0000 0.0000 0.0004 0.0000 0.0000 0.0002 0.0397
0.9419 0.0000 0.0050 0.0014 0.0001 0.0001 0.0352 0.0000 0.0130 0.0033
YTest
содержит цифры, соответствующие изображениям в XTest
. Столбцы YPred
содержат оценку predict
вероятности, что изображение содержит конкретную цифру. Таким образом, первый столбец содержит оценку вероятности, что данное изображение является цифрой 0, второй столбец содержит оценку вероятности, что изображение является цифрой 1, третий столбец содержит оценку вероятности, что изображение является цифрой 2 и так далее. Вы видите, что оценка predict
вероятностей для правильных цифр - почти 1, и вероятность для любой другой цифры - почти 0. predict
правильно оценивает первые 10 наблюдений как цифру 0.
Предварительно обученная сеть 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
Загрузите тестовые данные.
load JapaneseVowelsTest
Сделайте прогнозы на тестовых данных.
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 array
1
1
1
1
1
1
1
1
1
1
.NET
Обучивший сетьSeriesNetwork
| объект DAGNetwork
Обучивший сеть, заданный как SeriesNetwork
или объект DAGNetwork
. Можно получить обучивший сеть путем импорта предварительно обученной сети (например, при помощи функции alexnet
) или по образованию собственная сеть с помощью trainNetwork
.
X
Данные изображенияImageDatastore
| datastore | table
Данные изображения, заданные как одно из следующих.
Входной параметр | Описание |
---|---|
Трехмерный массив | Числовой массив, который представляет одно изображение. Массив имеет размер h-by-w-by-c, где h, w и c соответствуют высоте, ширине и количеству каналов изображения, соответственно. |
Массив 4-D | Числовой массив, который представляет стек изображений. Массив имеет размер h-by-w-by-c-by-N, где N является количеством изображений в стеке изображений. |
ImageDatastore |
Для получения дополнительной информации смотрите аргумент |
Datastore | Datastore, который возвращает данные как одно изображение, массив ячеек изображений или таблицу, первый столбец которой содержит изображения. Для получения дополнительной информации смотрите Хранилища данных для Глубокого обучения. |
Таблица | Первый столбец таблицы содержит или каналы передачи изображения или трехмерные массивы, представляющие изображения. Последующие столбцы содержат ответы. Для получения дополнительной информации смотрите аргумент |
sequences
— Последовательность или данные временных рядовПоследовательность или данные временных рядов, заданные как N-by-1 массив ячеек числовых массивов, где N является количеством наблюдений, числовой массив, представляющий одну последовательность или datastore.
Для входа массива ячеек или числового массива размерности числовых массивов, содержащих последовательности, зависят от типа данных.
Входной параметр | Описание |
---|---|
Векторные последовательности | c-by-s матрицы, где 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 должен возвратить данные как массив ячеек последовательностей или таблицы, первый столбец которой содержит последовательности. Размерности данных о последовательности должны соответствовать приведенной выше таблице.
'MiniBatchSize',256
задает мини-пакетный размер как 256.Задайте дополнительную пару, разделенную запятой аргумента Name,Value
. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение.
Имя должно находиться внутри одинарных кавычек (' ').
'MiniBatchSize'
— Размер мини-пакетовРазмер мини-пакетов, чтобы использовать для прогноза, заданного как положительное целое число. Большие мини-пакетные размеры требуют большей памяти, но могут привести к более быстрым прогнозам.
При создании прогнозов с последовательностями различных длин мини-пакетный размер может повлиять на объем дополнения добавленного к входным данным, которые могут привести к различным ожидаемым значениям. Попытайтесь использовать различные значения, чтобы видеть, который работает лучше всего с вашей сетью. Чтобы задать мини-пакетный размер и дополнительные опции, используйте опции 'SequenceLength'
и 'MiniBatchSize'
.
Пример: 'MiniBatchSize',256
'Acceleration'
— Оптимизация производительности'auto'
(значение по умолчанию) | 'mex'
| 'none'
Оптимизация производительности, заданная как пара, разделенная запятой, состоящая из 'Acceleration'
и одно из следующего:
'auto'
Автоматически примените много оптимизации, подходящей для входной сети и аппаратного ресурса.
MEX
Скомпилируйте и выполните MEX-функцию. Эта опция доступна при использовании графического процессора только. Используя графический процессор требует Parallel Computing Toolbox, и CUDA включил NVIDIA, графический процессор с вычисляет возможность 3.0 или выше. Если Parallel Computing Toolbox или подходящий графический процессор не доступны, то программное обеспечение возвращает ошибку.
'none'
Отключите все ускорение.
Опцией по умолчанию является 'auto'
. Если 'auto'
будет задан, MATLAB® применит много совместимой оптимизации. Если вы используете опцию 'auto'
, MATLAB никогда не генерирует MEX-функцию.
Используя опции 'Acceleration'
'auto'
и 'mex'
могут предложить выигрыши в производительности, но за счет увеличенного начального времени выполнения. Последующие вызовы с совместимыми параметрами быстрее. Используйте оптимизацию производительности, когда вы запланируете вызвать функцию многократно с помощью новых входных данных.
Опция 'mex'
генерирует и выполняет MEX-функцию на основе сети и параметров, используемых в вызове функции. У вас может быть несколько MEX-функций, сопоставленных с одной сетью когда-то. Очищение сетевой переменной также очищает любые MEX-функции, сопоставленные с той сетью.
Опция 'mex'
только доступна для входных данных, заданных как числовой массив, массив ячеек числовых массивов, таблицы или datastore изображений. Никакие другие типы datastore не поддерживают опцию 'mex'
.
Опция 'mex'
только доступна, когда вы используете графический процессор. Необходимо было также установить компилятор C/C++. Для инструкций по настройке смотрите Setup MEX (GPU Coder).
Ускорение 'mex'
не поддерживает все слои. Для списка поддерживаемых слоев смотрите Поддерживаемые Слои (GPU Coder).
Пример: 'Acceleration','mex'
Среда выполнения
Аппаратный ресурс'auto'
(значение по умолчанию) | 'gpu'
| 'cpu'
Аппаратный ресурс, заданный как пара, разделенная запятой, состоящая из 'ExecutionEnvironment'
и одно из следующего:
'auto'
Используйте графический процессор, если вы доступны; в противном случае используйте центральный процессор.
'gpu'
— Используйте графический процессор. Используя графический процессор требует Parallel Computing Toolbox, и CUDA включил NVIDIA, графический процессор с вычисляет возможность 3.0 или выше. Если Parallel Computing Toolbox или подходящий графический процессор не доступны, то программное обеспечение возвращает ошибку.
'cpu'
— Используйте центральный процессор.
Пример: 'ExecutionEnvironment','cpu'
'SequenceLength'
— Опция, чтобы заполнить, обрежьте или разделите входные последовательности'longest'
(значение по умолчанию) | 'shortest'
| положительное целое числоОпция, чтобы заполнить, обрежьте или разделите входные последовательности, заданные как одно из следующего:
'longest'
— Заполните последовательности в каждом мини-пакете, чтобы иметь ту же длину как самая длинная последовательность. Эта опция не отбрасывает данных, хотя дополнение может ввести шум сети.
'shortest'
— Усеченные последовательности в каждом мини-пакете, чтобы иметь ту же длину как самая короткая последовательность. Эта опция гарантирует, что никакое дополнение не добавляется, за счет отбрасывания данных.
Положительное целое число — Для каждого мини-пакета, заполните последовательности к самому близкому кратному заданная длина, которая больше, чем самая долгая длина последовательности в мини-пакете, и затем разделяет последовательности в меньшие последовательности заданной длины. Если разделение происходит, то программное обеспечение создает дополнительные мини-пакеты. Используйте эту опцию, если полные последовательности не умещаются в памяти. Также попытайтесь сократить количество последовательностей на мини-пакет путем установки опции 'MiniBatchSize'
на нижнее значение.
Если вы задаете длину последовательности как положительное целое число, то программные процессы меньшие последовательности в последовательных итерациях. Сеть обновляет сетевое состояние между последовательностями разделения.
Программное обеспечение заполняет и обрезает последовательности справа. Чтобы узнать больше об эффекте дополнения, усечение и разделение входных последовательностей, видят, что Последовательность Дополняет, Усечение, и Разделяет.
Пример: 'SequenceLength','shortest'
'SequencePaddingValue'
— Значение, чтобы заполнить входные последовательностиЗначение, которым можно заполнить входные последовательности, заданные как скаляр. Опция допустима только, когда SequenceLength
является 'longest'
или положительное целое число. Не заполняйте последовательности NaN
, потому что выполнение так может распространить ошибки в сети.
Пример: 'SequencePaddingValue',-1
YPred
— Предсказанные очки или ответыПредсказанные очки или ответы, возвращенные как матрица, 4-D числовой массив или массив ячеек матриц. Формат YPred
зависит от типа проблемы.
Следующая таблица описывает формат для проблем классификации.
Задача | Формат |
---|---|
Отобразите классификацию | N-by-K матрица, где N является количеством наблюдений и K, является количеством классов |
Классификация последовательностей к метке | |
Классификация от последовательности к последовательности | N-by-1 массив ячеек матриц, где N является количеством наблюдений. Последовательности являются матрицами со строками K, где K является количеством ответов. Каждая последовательность имеет то же количество временных шагов как соответствующая входная последовательность. |
Следующая таблица описывает формат для проблем регрессии.
Задача | Формат |
---|---|
Отобразите регрессию |
|
Регрессия Sequence-one | N-by-R матрица, где N является количеством наблюдений и R, является количеством ответов. |
Регрессия от последовательности к последовательности | N-by-1 массив ячеек числовых последовательностей, где N является количеством наблюдений. Последовательности являются матрицами со строками R, где R является количеством ответов. Каждая последовательность имеет то же количество временных шагов как соответствующая входная последовательность. |
Для проблем регрессии от последовательности к последовательности с одним наблюдением sequences
может быть матрицей. В этом случае YPred
является матрицей ответов.
Если данные изображения содержат NaN
s, predict
распространяет их через сеть. Если сеть имеет слои ReLU, эти слои игнорируют NaN
s. Однако, если сеть не имеет слоя ReLU, то predict
возвращает NaNs как прогнозы.
Все функции для обучения глубокому обучению, прогноза и валидации в Deep Learning Toolbox™ выполняют вычисления с помощью арифметики с плавающей точкой, с одинарной точностью. Функции для глубокого обучения включают trainNetwork
, predict
, classify
и activations
. Программное обеспечение использует арифметику с одинарной точностью, когда вы обучаете нейронные сети с помощью и центральных процессоров и графических процессоров.
Можно вычислить предсказанные очки и предсказанные классы от обучившего сеть использования classify
.
Можно также вычислить активации из сетевого слоя с помощью activations
.
Для последовательности к метке и сетей классификации от последовательности к последовательности (сети LSTM), можно сделать прогнозы и обновить сетевое состояние с помощью classifyAndUpdateState
и predictAndUpdateState
.
[1] М. Кудо, J. Тояма, и М. Шимбо. "Многомерная Классификация Кривых Используя Прохождение через области". Буквы Распознавания образов. Издание 20, № 11-13, страницы 1103-1111.
[2] Репозиторий машинного обучения UCI: японский набор данных гласных. https://archive.ics.uci.edu/ml/datasets/Japanese+Vowels
Указания и ограничения по применению:
Только синтаксис YPred = predict(net,X)
поддерживается.
Вход X
не должен иметь переменного размера. Размер должен быть зафиксирован во время генерации кода.
Для получения дополнительной информации о генерации кода для глубоких нейронных сетей, смотрите Рабочий процесс для Генерации кода Глубокого обучения с MATLAB Coder (MATLAB Coder).
activations
| classify
| classifyAndUpdateState
| predictAndUpdateState
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.