Обучите нейронную сеть для глубокого обучения
Для классификации и задач регрессии, можно использовать trainNetwork
обучать сверточную нейронную сеть (ConvNet, CNN) для данных изображения, рекуррентная нейронная сеть (RNN), такая как долгая краткосрочная память (LSTM) или сеть закрытого текущего модуля (GRU) для данных о последовательности или сеть многоуровневого perceptron (MLP) для числовых данных о функции. Можно обучаться или на центральном процессоре или на графическом процессоре. Для классификации изображений и регрессии изображений, можно обучить использование нескольких графических процессоров или параллельно. Используя графический процессор, мультиграфический процессор и параллельные опции требуют Parallel Computing Toolbox™. Чтобы использовать графический процессор для глубокого обучения, у вас должен также быть CUDA®, включенный NVIDIA®, графический процессор с вычисляет возможность 3.0 или выше. Задавать опции обучения, включая опции для среды выполнения, использование trainingOptions
функция.
обучает сеть с помощью данных в таблице net
= trainNetwork(tbl
,responseNames
,layers
,options
)tbl
и задает столбцы таблицы, содержащие ответы.
Загрузите данные как ImageDatastore
объект.
digitDatasetPath = fullfile(matlabroot,'toolbox','nnet', ... 'nndemos','nndatasets','DigitDataset'); imds = imageDatastore(digitDatasetPath, ... 'IncludeSubfolders',true, ... 'LabelSource','foldernames');
Datastore содержит 10 000 синтетических изображений цифр от 0 до 9. Изображения сгенерированы путем применения случайных преобразований к изображениям цифры, созданным с различными шрифтами. Каждое изображение цифры является 28 28 пикселями. Datastore содержит равное количество изображений на категорию.
Отобразите некоторые изображения в datastore.
figure numImages = 10000; perm = randperm(numImages,20); for i = 1:20 subplot(4,5,i); imshow(imds.Files{perm(i)}); drawnow; end
Разделите datastore так, чтобы каждая категория в наборе обучающих данных имела 750 изображений, и набор тестирования имеет остающиеся изображения от каждой метки.
numTrainingFiles = 750;
[imdsTrain,imdsTest] = splitEachLabel(imds,numTrainingFiles,'randomize');
splitEachLabel
разделяет файлы изображений в digitData
в два новых хранилища данных, imdsTrain
и imdsTest
.
Задайте архитектуру сверточной нейронной сети.
layers = [ ... imageInputLayer([28 28 1]) convolution2dLayer(5,20) reluLayer maxPooling2dLayer(2,'Stride',2) fullyConnectedLayer(10) softmaxLayer classificationLayer];
Установите опции на настройки по умолчанию для стохастического градиентного спуска с импульсом. Определите максимальный номер эпох в 20 и начните обучение с начальной скорости обучения 0,0001.
options = trainingOptions('sgdm', ... 'MaxEpochs',20,... 'InitialLearnRate',1e-4, ... 'Verbose',false, ... 'Plots','training-progress');
Обучите сеть.
net = trainNetwork(imdsTrain,layers,options);
Запустите обучивший сеть на наборе тестов, который не использовался, чтобы обучить сеть и предсказать метки изображения (цифры).
YPred = classify(net,imdsTest); YTest = imdsTest.Labels;
Вычислите точность. Точность является отношением количества истинных меток в тестовых данных, совпадающих с классификациями от classify
к количеству изображений в тестовых данных.
accuracy = sum(YPred == YTest)/numel(YTest)
accuracy = 0.9420
Обучите сверточную нейронную сеть с помощью увеличенных данных изображения. Увеличение данных помогает препятствовать тому, чтобы сеть сверхсоответствовала и запомнила точные детали учебных изображений.
Загрузите выборочные данные, которые состоят из синтетических изображений рукописных цифр.
[XTrain,YTrain] = digitTrain4DArrayData;
digitTrain4DArrayData
загружает набор обучающих данных цифры как 4-D данные массива. XTrain
28 28 1 5 000 массивов, где:
28 высота и ширина изображений.
1 количество каналов.
5000 количество синтетических изображений рукописных цифр.
YTrain
категориальный вектор, содержащий метки для каждого наблюдения.
Отложите 1000 из изображений для сетевой валидации.
idx = randperm(size(XTrain,4),1000); XValidation = XTrain(:,:,:,idx); XTrain(:,:,:,idx) = []; YValidation = YTrain(idx); YTrain(idx) = [];
Создайте imageDataAugmenter
объект, который задает опции предварительной обработки для увеличения изображений, такие как изменение размеров, вращение, перевод и отражение. Случайным образом переведите изображения до трех пикселей горизонтально и вертикально и вращайте изображения с углом до 20 градусов.
imageAugmenter = imageDataAugmenter( ... 'RandRotation',[-20,20], ... 'RandXTranslation',[-3 3], ... 'RandYTranslation',[-3 3])
imageAugmenter = imageDataAugmenter with properties: FillValue: 0 RandXReflection: 0 RandYReflection: 0 RandRotation: [-20 20] RandScale: [1 1] RandXScale: [1 1] RandYScale: [1 1] RandXShear: [0 0] RandYShear: [0 0] RandXTranslation: [-3 3] RandYTranslation: [-3 3]
Создайте augmentedImageDatastore
возразите, чтобы использовать для сетевого обучения и задать изображение выходной размер. Во время обучения datastore выполняет увеличение изображений и изменяет размер изображений. Datastore увеличивает изображения, не сохраняя образов к памяти. trainNetwork
обновляет сетевые параметры и затем отбрасывает увеличенные изображения.
imageSize = [28 28 1];
augimds = augmentedImageDatastore(imageSize,XTrain,YTrain,'DataAugmentation',imageAugmenter);
Задайте архитектуру сверточной нейронной сети.
layers = [ imageInputLayer(imageSize) convolution2dLayer(3,8,'Padding','same') batchNormalizationLayer reluLayer maxPooling2dLayer(2,'Stride',2) convolution2dLayer(3,16,'Padding','same') batchNormalizationLayer reluLayer maxPooling2dLayer(2,'Stride',2) convolution2dLayer(3,32,'Padding','same') batchNormalizationLayer reluLayer fullyConnectedLayer(10) softmaxLayer classificationLayer];
Задайте опции обучения для стохастического градиентного спуска с импульсом.
opts = trainingOptions('sgdm', ... 'MaxEpochs',15, ... 'Shuffle','every-epoch', ... 'Plots','training-progress', ... 'Verbose',false, ... 'ValidationData',{XValidation,YValidation});
Обучите сеть. Поскольку изображения валидации не увеличиваются, точность валидации выше, чем учебная точность.
net = trainNetwork(augimds,layers,opts);
Загрузите выборочные данные, которые состоят из синтетических изображений рукописных цифр. Третий выход содержит соответствующие углы в градусах, которыми вращалось каждое изображение.
Загрузите учебные изображения как 4-D массивы с помощью digitTrain4DArrayData
. Выход XTrain
28 28 1 5 000 массивов, где:
28 высота и ширина изображений.
1 количество каналов.
5000 количество синтетических изображений рукописных цифр.
YTrain
содержит углы поворота в градусах.
[XTrain,~,YTrain] = digitTrain4DArrayData;
Отобразите 20 случайных учебных изображений с помощью imshow
.
figure numTrainImages = numel(YTrain); idx = randperm(numTrainImages,20); for i = 1:numel(idx) subplot(4,5,i) imshow(XTrain(:,:,:,idx(i))) drawnow; end
Задайте архитектуру сверточной нейронной сети. Для проблем регрессии включайте слой регрессии в конце сети.
layers = [ ...
imageInputLayer([28 28 1])
convolution2dLayer(12,25)
reluLayer
fullyConnectedLayer(1)
regressionLayer];
Задайте сетевые опции обучения. Установите начальную букву, изучают уровень 0,001.
options = trainingOptions('sgdm', ... 'InitialLearnRate',0.001, ... 'Verbose',false, ... 'Plots','training-progress');
Обучите сеть.
net = trainNetwork(XTrain,YTrain,layers,options);
Проверьте производительность сети путем оценки точности предсказания тестовых данных. Используйте predict
предсказать углы вращения изображений валидации.
[XTest,~,YTest] = digitTest4DArrayData; YPred = predict(net,XTest);
Оцените эффективность модели путем вычисления среднеквадратичной ошибки (RMSE) предсказанных и фактических углов вращения.
rmse = sqrt(mean((YTest - YPred).^2))
rmse = single
6.0356
Обучите сеть LSTM глубокого обучения для классификации последовательностей к метке.
Загрузите японский набор данных Гласных как описано в [1] и [2]. XTrain
массив ячеек, содержащий 270 последовательностей различной длины с 12 функциями, соответствующими коэффициентам кепстра LPC. Y
категориальный вектор из меток 1,2..., 9. Записи в XTrain
матрицы с 12 строками (одна строка для каждого признака) и различным количеством столбцов (один столбец для каждого временного шага).
[XTrain,YTrain] = japaneseVowelsTrainData;
Визуализируйте первые временные ряды в графике. Каждая линия соответствует функции.
figure plot(XTrain{1}') title("Training Observation 1") numFeatures = size(XTrain{1},1); legend("Feature " + string(1:numFeatures),'Location','northeastoutside')
Задайте архитектуру сети LSTM. Задайте входной размер как 12 (количество функций входных данных). Задайте слой LSTM, чтобы иметь 100 скрытых модулей и вывести последний элемент последовательности. Наконец, задайте девять классов включением полносвязного слоя размера 9, сопровождаемый softmax слоем и слоем классификации.
inputSize = 12; numHiddenUnits = 100; numClasses = 9; layers = [ ... sequenceInputLayer(inputSize) lstmLayer(numHiddenUnits,'OutputMode','last') fullyConnectedLayer(numClasses) softmaxLayer classificationLayer]
layers = 5×1 Layer array with layers: 1 '' Sequence Input Sequence input with 12 dimensions 2 '' LSTM LSTM with 100 hidden units 3 '' Fully Connected 9 fully connected layer 4 '' Softmax softmax 5 '' Classification Output crossentropyex
Задайте опции обучения. Задайте решатель как 'adam'
и 'GradientThreshold'
как 1. Установите мини-пакетный размер на 27 и определите максимальный номер эпох к 70.
Поскольку мини-пакеты малы с короткими последовательностями, центральный процессор лучше подходит для обучения. Установите 'ExecutionEnvironment'
к 'cpu'
. Чтобы обучаться на графическом процессоре, при наличии, устанавливает 'ExecutionEnvironment'
к 'auto'
(значение по умолчанию).
maxEpochs = 70; miniBatchSize = 27; options = trainingOptions('adam', ... 'ExecutionEnvironment','cpu', ... 'MaxEpochs',maxEpochs, ... 'MiniBatchSize',miniBatchSize, ... 'GradientThreshold',1, ... 'Verbose',false, ... 'Plots','training-progress');
Обучите сеть LSTM с заданными опциями обучения.
net = trainNetwork(XTrain,YTrain,layers,options);
Загрузите набор тестов и классифицируйте последовательности в динамики.
[XTest,YTest] = japaneseVowelsTestData;
Классифицируйте тестовые данные. Задайте тот же мини-пакетный размер, используемый для обучения.
YPred = classify(net,XTest,'MiniBatchSize',miniBatchSize);
Вычислите точность классификации предсказаний.
acc = sum(YPred == YTest)./numel(YTest)
acc = 0.9514
Если у вас есть набор данных числовых функций (например, набор числовых данных без пространственных или измерений времени), то можно обучить нейронную сеть для глубокого обучения с помощью входного слоя функции.
Считайте данные о преобразовании регистра передачи из файла 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
Просмотрите имена классов набора данных.
classNames = categories(tbl{:,labelName})
classNames = 2×1 cell
{'No Tooth Fault'}
{'Tooth Fault' }
Затем разделите набор данных в обучение и протестируйте разделы. Отложите 15% данных для тестирования.
Определите количество наблюдений для каждого раздела.
numObservations = size(tbl,1); numObservationsTrain = floor(0.85*numObservations); numObservationsTest = numObservations - numObservationsTrain;
Создайте массив случайных индексов, соответствующих наблюдениям, и разделите его с помощью размеров раздела.
idx = randperm(numObservations); idxTrain = idx(1:numObservationsTrain); idxTest = idx(numObservationsTrain+1:end);
Разделите таблицу данных в обучение, валидацию и разделы тестирования с помощью индексов.
tblTrain = tbl(idxTrain,:); tblTest = tbl(idxTest,:);
Задайте сеть с входным слоем функции и задайте количество функций. Кроме того, сконфигурируйте входной слой, чтобы нормировать данные с помощью нормализации Z-счета.
numFeatures = size(tbl,2) - 1; numClasses = numel(classNames); layers = [ featureInputLayer(numFeatures,'Normalization', 'zscore') fullyConnectedLayer(50) batchNormalizationLayer reluLayer fullyConnectedLayer(numClasses) softmaxLayer classificationLayer];
Задайте опции обучения.
miniBatchSize = 16; options = trainingOptions('adam', ... 'MiniBatchSize',miniBatchSize, ... 'Shuffle','every-epoch', ... 'Plots','training-progress', ... 'Verbose',false);
Обучите сеть с помощью архитектуры, заданной layers
, обучающие данные и опции обучения.
net = trainNetwork(tblTrain,layers,options);
Предскажите метки тестовых данных с помощью обучившего сеть и вычислите точность. Точность является пропорцией меток, которые сеть предсказывает правильно.
YPred = classify(net,tblTest,'MiniBatchSize',miniBatchSize);
YTest = tblTest{:,labelName};
accuracy = sum(YPred == YTest)/numel(YTest)
accuracy = 0.9688
imds
ImageDatastoreImageDatastore
объектОтобразите datastore, содержащий изображения и метки в виде ImageDatastore
объект.
Создайте datastore изображений с помощью imageDatastore
функция. Чтобы использовать имена папок, содержащих изображения как метки, установите 'LabelSource'
опция к 'foldernames'
. В качестве альтернативы задайте метки вручную с помощью Labels
свойство datastore изображений.
trainNetwork
функционируйте хранилища данных поддержек изображений для сетей классификации изображений только. Чтобы использовать хранилища данных изображений для сетей регрессии, создайте преобразованный или объединенный datastore с помощью transform
и combine
функции. Для получения дополнительной информации смотрите ds
входной параметр.
ImageDatastore
позволяет пакетное чтение JPG или упреждающую выборку использования файлов изображений PNG. Если вы используете пользовательскую функцию для чтения изображений, то ImageDatastore
не выбирает с упреждением.
Совет
Использование augmentedImageDatastore
для эффективной предварительной обработки изображений для глубокого обучения включая изменение размеров изображений.
Не используйте readFcn
опция imageDatastore
для предварительной обработки или изменения размеров, когда эта опция обычно значительно медленнее.
ds
datastoreDatastore для данных, которые не помещаются в память, и предварительной обработки.
Таблица ниже приводит хранилища данных, которые непосредственно совместимы с trainNetwork
. Можно использовать другие встроенные хранилища данных для учебных нейронных сетей для глубокого обучения при помощи transform
и combine
функции. Эти функции могут преобразовать данные, считанные от хранилищ данных до таблицы или формата массива ячеек, требуемого trainNetwork
. Для сетей с несколькими входными параметрами datastore должен быть объединенным или преобразованным datastore или пользовательским мини-пакетным datastore. Для получения дополнительной информации смотрите Хранилища данных для Глубокого обучения.
Тип Datastore | Описание |
---|---|
CombinedDatastore | Горизонтально конкатенируйте данные, считанные из двух или больше базовых хранилищ данных. |
TransformedDatastore | Преобразуйте пакеты считанных данных из базового datastore согласно вашему собственному конвейеру предварительной обработки. |
AugmentedImageDatastore | Примените случайные аффинные геометрические преобразования, включая изменение размеров, вращение, отражение, сдвиг и перевод, для учебных глубоких нейронных сетей. |
PixelLabelImageDatastore (Computer Vision Toolbox) | Примените идентичные аффинные геометрические преобразования к изображениям, и соответствующие метки основной истины для того, чтобы обучить сети семантической сегментации (требует Computer Vision Toolbox™). |
RandomPatchExtractionDatastore (Image Processing Toolbox) | Извлеките пары случайных закрашенных фигур от изображений, или пиксельные изображения метки (требует Image Processing Toolbox™). Опционально можно применить идентичные случайные аффинные геометрические преобразования к парам закрашенных фигур. |
DenoisingImageDatastore (Image Processing Toolbox) | Применяйтесь случайным образом сгенерированный Гауссов шум для того, чтобы обучить сети шумоподавления (требует Image Processing Toolbox). |
Пользовательский мини-пакетный datastore | Создайте мини-пакеты последовательности, временных рядов, текста, или покажите данные. Для получения дополнительной информации смотрите, Разрабатывают Пользовательский Мини-пакетный Datastore. |
Datastore должен возвратить данные в таблице или массиве ячеек. Формат datastore выход зависит от сетевой архитектуры.
Сетевая архитектура | Datastore Выход | Пример Выход |
---|---|---|
Один входной слой | Таблица или массив ячеек с двумя столбцами. Первые и вторые столбцы задают предикторы и ответы, соответственно. Табличными элементами должны быть скаляры, векторы-строки или массивы ячеек 1 на 1, содержащие числовой массив. Пользовательские мини-пакетные хранилища данных должны вывести таблицы. |
data = read(ds) data = 4×2 table Predictors Response __________________ ________ {224×224×3 double} 2 {224×224×3 double} 7 {224×224×3 double} 9 {224×224×3 double} 9 |
data = read(ds) data = 4×2 cell array {224×224×3 double} {[2]} {224×224×3 double} {[7]} {224×224×3 double} {[9]} {224×224×3 double} {[9]} | ||
Несколько входных слоев | Массив ячеек с ( Первый Распоряжение входных параметров дано |
data = read(ds) data = 4×3 cell array {224×224×3 double} {128×128×3 double} {[2]} {224×224×3 double} {128×128×3 double} {[2]} {224×224×3 double} {128×128×3 double} {[9]} {224×224×3 double} {128×128×3 double} {[9]} |
Формат предикторов зависит от типа данных.
Данные | Формат предикторов |
---|---|
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, является длиной последовательности. |
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 является количеством функций. |
Для предикторов, возвращенных в таблицах, элементы должны содержать числовой скаляр, числовой вектор-строку или массив ячеек 1 на 1, содержащий числовой массив.
trainNetwork
функция не поддерживает сети с несколькими входными слоями последовательности.
Формат ответов зависит от типа задачи.
Задача | Формат ответов |
---|---|
Классификация | Категориальный скаляр |
Регрессия |
|
Классификация от последовательности к последовательности | 1 s последовательностью категориальных меток, где s является длиной последовательности соответствующей последовательности предиктора. |
Регрессия от последовательности к последовательности | R-by-s матрица, где R является количеством ответов и s, является длиной последовательности соответствующей последовательности предиктора. |
Для ответов, возвращенных в таблицах, элементами должен быть категориальный скаляр, числовой скаляр, числовой вектор-строка или массив ячеек 1 на 1, содержащий числовой массив.
X
— Отобразите или покажите данныеОтобразите или покажите данные в виде числового массива. Размер массива зависит от типа входа:
Входной параметр | Описание |
---|---|
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 количество функций входных данных. |
Если массив содержит NaN
s, затем они распространены через сеть.
sequences
— Последовательность или данные временных рядовПоследовательность или данные временных рядов в виде N-by-1 массив ячеек числовых массивов, где N является количеством наблюдений или числовым массивом, представляющим одну последовательность.
Для входа массива ячеек или числового массива размерности числовых массивов, содержащих последовательности, зависят от типа данных.
Входной параметр | Описание |
---|---|
Векторные последовательности | 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, используйте ds
входной параметр.
Y
— ОтветыОтветы в виде категориального вектора из меток, числового массива, массива ячеек категориальных последовательностей или массива ячеек числовых последовательностей. Формат Y
зависит от типа задачи. Ответы не должны содержать NaN
s.
Задача | Формат |
---|---|
Отобразите или покажите классификацию | N-by-1 категориальный вектор из меток, где N является количеством наблюдений. |
Классификация последовательностей к метке | |
Классификация от последовательности к последовательности | N-by-1 массив ячеек категориальных последовательностей меток, где N является количеством наблюдений. Каждая последовательность должна иметь то же количество временных шагов как соответствующая последовательность предиктора. Для задач классификации от последовательности к последовательности с одним наблюдением, |
Задача | Формат |
---|---|
2D регрессия изображений |
|
3-D регрессия изображений |
|
Регрессия Sequence-one | N-by-R матрица, где N является количеством последовательностей и R, является количеством ответов. |
Регрессия от последовательности к последовательности | N-by-1 массив ячеек числовых последовательностей, где N является количеством последовательностей. Последовательности являются матрицами со строками R, где R является количеством ответов. Каждая последовательность должна иметь то же количество временных шагов как соответствующая последовательность предиктора. Для задач регрессии от последовательности к последовательности с одним наблюдением, |
Покажите регрессию | N-by-R матрица, где N является количеством наблюдений и R, является количеством ответов. |
Нормализация ответов часто помогает стабилизироваться и ускорить обучение нейронных сетей для регрессии. Для получения дополнительной информации смотрите, Обучают Сверточную нейронную сеть Регрессии.
tbl
— Входные данныеtable
Входные данные в виде таблицы, содержащей предикторы и ответы. Каждая строка в таблице соответствует наблюдению.
Расположение предикторов и ответов в столбцах таблицы зависит от типа задачи.
Классификация
Задача | Предикторы | Ответы |
---|---|---|
Отобразите классификацию |
Предикторы должны быть в первом столбце таблицы. | Категориальная метка |
Классификация последовательностей к метке | Путь к абсолютному или файлу прямого доступа к файлу MAT, содержащему последовательность или данные временных рядов. Файл MAT должен содержать временные ряды, представленные матрицей строками, соответствующими точкам данных и столбцам, соответствующим временным шагам. Предикторы должны быть в первом столбце таблицы. | Категориальная метка |
Классификация от последовательности к последовательности | Путь к абсолютному или файлу прямого доступа к файлу MAT. Файл MAT должен содержать временные ряды, представленные категориальным вектором с соответствием записей меткам для каждого временного шага. | |
Покажите классификацию | Числовой скаляр. Если вы не задаете | Категориальная метка |
Для сетей классификации с изображением или входом последовательности, если вы не задаете responseNames
, затем функция, по умолчанию, использует первый столбец tbl
для предикторов и второго столбца как метки. Для сетей классификации с входом функции, если вы не задаете responseNames
аргумент, затем функция, по умолчанию, использует первое (numColumns - 1
) столбцы tbl
для предикторов и последнего столбца для меток, где numFeatures
количество функций во входных данных.
Регрессия
Задача | Предикторы | Ответы |
---|---|---|
Отобразите регрессию |
Предикторы должны быть в первом столбце таблицы. |
|
Регрессия Sequence-one | Путь к абсолютному или файлу прямого доступа к файлу MAT, содержащему последовательность или данные временных рядов. Файл MAT должен содержать временные ряды, представленные матрицей строками, соответствующими точкам данных и столбцам, соответствующим временным шагам. Предикторы должны быть в первом столбце таблицы. |
|
Регрессия от последовательности к последовательности | Путь к абсолютному или файлу прямого доступа к файлу MAT. Файл MAT должен содержать временные ряды, представленные матрицей, где строки соответствуют ответам, и столбцы соответствуют временным шагам. | |
Покажите регрессию | Функции заданы в одном или нескольких столбцах как скаляры. Если вы не задаете | Один или несколько столбцов скалярных значений |
Для сетей регрессии с изображением или входом последовательности, если вы не задаете responseNames
, затем функция, по умолчанию, использует первый столбец tbl
для предикторов и последующих столбцов как ответы. Для сетей регрессии с входом функции, если вы не задаете responseNames
аргумент, затем функция, по умолчанию, использует первый numFeatures
столбцы для предикторов и последующие столбцы для ответов, где numFeatures
количество функций во входных данных.
Нормализация ответов часто помогает стабилизироваться и ускорить обучение нейронных сетей для регрессии. Для получения дополнительной информации смотрите, Обучают Сверточную нейронную сеть Регрессии.
Ответы не могут содержать NaN
s. Если данные о предикторе содержат NaN
s, затем они распространены посредством обучения. Однако в большинстве случаев обучению не удается сходиться.
Типы данных: table
responseNames
— Имена переменных отклика во входной таблицеИмена переменных отклика во входной таблице в виде одного из следующего:
Для классификации или задач регрессии с одним ответом, responseNames
должен быть вектор символов или строковый скаляр, содержащий переменную отклика во входной таблице.
Для задач регрессии со множественными ответами, responseNames
должен быть массив строк или массив ячеек из символьных векторов, содержащий переменные отклика во входной таблице.
Типы данных: char |
cell
| string
layers
— Слоя сетиLayer
массив | LayerGraph
объектСлоя сети в виде Layer
массив или LayerGraph
объект.
Чтобы создать сеть со всеми слоями, соединенными последовательно, можно использовать Layer
массив как входной параметр. В этом случае возвращенной сетью является SeriesNetwork
объект.
Сеть направленного графа без петель (DAG) имеет комплексную структуру, в которой слои могут иметь несколько вводов и выводов. Чтобы создать сеть DAG, задайте сетевую архитектуру как LayerGraph
возразите и затем используйте тот график слоев в качестве входного параметра к trainNetwork
.
Для списка встроенных слоев смотрите Список слоев глубокого обучения.
options
— Опции обученияTrainingOptionsSGDM
| TrainingOptionsRMSProp
| TrainingOptionsADAM
Опции обучения в виде TrainingOptionsSGDM
, TrainingOptionsRMSProp
, или TrainingOptionsADAM
объект, возвращенный trainingOptions
функция.
net
— Обучивший сетьSeriesNetwork
возразите | DAGNetwork
объектОбучивший сеть, возвращенный как SeriesNetwork
возразите или DAGNetwork
объект.
Если вы обучаете сеть с помощью Layer
массив, затем net
SeriesNetwork
объект. Если вы обучаете сеть с помощью LayerGraph
объект, затем net
DAGNetwork
объект.
info
— Учебная информацияУчебная информация, возвращенная как структура, где каждое поле является скаляром или числовым вектором с одним элементом на учебную итерацию.
Для задач классификации, info
содержит следующие поля:
TrainingLoss
— Значения функции потерь
TrainingAccuracy
— Учебная точность
ValidationLoss
— Значения функции потерь
ValidationAccuracy
— Точность валидации
BaseLearnRate
— Скорости обучения
FinalValidationLoss
— Итоговая потеря валидации
FinalValidationAccuracy
— Итоговая точность валидации
Для задач регрессии, info
содержит следующие поля:
TrainingLoss
— Значения функции потерь
TrainingRMSE
— Учебные значения RMSE
ValidationLoss
— Значения функции потерь
ValidationRMSE
— Валидация значения RMSE
BaseLearnRate
— Скорости обучения
FinalValidationLoss
— Итоговая потеря валидации
FinalValidationRMSE
— Итоговая валидация RMSE
Структура только содержит поля ValidationLoss
, ValidationAccuracy
, ValidationRMSE
, FinalValidationLoss
, FinalValidationAccuracy
и FinalValidationRMSE
когда options
задает данные о валидации. 'ValidationFrequency'
опция trainingOptions
определяет, какие итерации программное обеспечение вычисляет метрики валидации. Итоговые метрики валидации являются скаляром. Другие поля структуры являются векторами-строками, где каждый элемент соответствует учебной итерации. Для итераций, когда программное обеспечение не вычисляет метрики валидации, соответствующими значениями в структуре является NaN
.
Если ваша сеть содержит слои нормализации партии., то итоговые метрики валидации часто отличаются от метрик валидации, оцененных во время обучения. Это вызвано тем, что слои нормализации партии. в итоговой сети выполняют различные операции, чем во время обучения. Для получения дополнительной информации смотрите batchNormalizationLayer
.
Deep Learning Toolbox™ позволяет вам сохранить сети как .mat файлы после каждой эпохи во время обучения. Это периодическое сохранение особенно полезно, когда у вас есть большая сеть или большой набор данных, и обучение занимает много времени. Если обучение прервано по некоторым причинам, можно возобновить обучение от последней сохраненной сети контрольной точки. Если вы хотите trainNetwork
чтобы сохранить сети контрольной точки, затем необходимо задать имя пути при помощи 'CheckpointPath'
аргумент пары "имя-значение" trainingOptions
. Если путь, который вы задаете, не существует, то trainingOptions
возвращает ошибку.
trainNetwork
автоматически уникальные имена присвоений, чтобы отметить сетевые файлы контрольной точкой. На имя в качестве примера, net_checkpoint__351__2018_04_12__18_09_52.mat
, 351 номер итерации, 2018_04_12
дата и 18_09_52
время в который trainNetwork
сохраняет сеть. Можно загрузить сетевой файл контрольной точки путем двойного клика по нему или использования команды загрузки в командной строке. Например:
load net_checkpoint__351__2018_04_12__18_09_52.mat
trainNetwork
. Например:trainNetwork(XTrain,YTrain,net.Layers,options)
Все функции для обучения глубокому обучению, предсказания и валидации в Deep Learning Toolbox выполняют расчеты с помощью арифметики с плавающей точкой, с одинарной точностью. Функции для глубокого обучения включают trainNetwork
, predict
, classify
, и activations
. Программное обеспечение использует арифметику с одинарной точностью, когда вы обучаете нейронные сети с помощью и центральных процессоров и графических процессоров.
[1] Kudo, M. J. Тояма, и М. Шимбо. "Многомерная Классификация Кривых Используя Прохождение через области". Буквы Распознавания образов. Издание 20, № 11-13, стр 1103–1111.
[2] Kudo, M. J. Тояма, и М. Шимбо. Японский Набор данных Гласных. https://archive.ics.uci.edu/ml/datasets/Japanese+Vowels
Чтобы запустить расчет параллельно, установите 'ExecutionEnvironment'
опция к 'multi-gpu'
или 'parallel'
.
Используйте trainingOptions
установить 'ExecutionEnvironment'
и предоставьте options
к trainNetwork
. Если вы не устанавливаете 'ExecutionEnvironment'
то trainNetwork
работает на графическом процессоре при наличии.
Для получения дополнительной информации смотрите, Увеличивают Глубокое обучение в параллели и в облаке.
analyzeNetwork
| assembleNetwork
| classify
| DAGNetwork
| Deep Network Designer | LayerGraph
| predict
| SeriesNetwork
| trainingOptions
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.