trainNetwork

Обучите нейронную сеть для глубокого обучения

Описание

Используйте trainNetwork обучать сверточную нейронную сеть (ConvNet, CNN), сеть долгой краткосрочной памяти (LSTM) или двунаправленная сеть LSTM (BiLSTM) для классификации глубокого обучения и проблем регрессии. Можно обучить сеть или на центральном процессоре или на графическом процессоре. Для классификации изображений и регрессии изображений, можно обучить использование нескольких графических процессоров или параллельно. Используя графический процессор, мультиграфический процессор и параллельные опции требуют Parallel Computing Toolbox™. Чтобы использовать графический процессор в глубоком обучении, у вас должен также быть CUDA®, включенный NVIDIA®, графический процессор с вычисляет возможность 3.0 или выше. Задайте опции обучения, включая опции для среды выполнения, при помощи trainingOptions.

пример

net = trainNetwork(imds,layers,options) обучает сеть для проблем классификации изображений. Datastore изображений imds хранит входные данные изображения, layers задает сетевую архитектуру и options задает опции обучения.

пример

net = trainNetwork(ds,layers,options) обучает сеть с помощью datastore ds. Для сетей с несколькими входными параметрами используйте этот синтаксис с объединенным или преобразованным datastore.

пример

net = trainNetwork(X,Y,layers,options) обучает сеть для классификации изображений и проблем регрессии. Числовой массив X содержит переменные предикторы и Y содержит категориальные метки или числовые ответы.

пример

net = trainNetwork(sequences,Y,layers,options) обучает сеть для классификации последовательностей и проблем регрессии (например, сеть LSTM или BiLSTM), где sequences содержит последовательность или предикторы временных рядов и Y содержит ответы. Для проблем классификации, Y категориальный вектор или массив ячеек категориальных последовательностей. Для проблем регрессии, Y матрица целей или массив ячеек числовых последовательностей.

net = trainNetwork(tbl,layers,options) обучает сеть для проблем регрессии и классификации. Таблица tbl содержит числовые данные или пути к файлам к данным. Предикторы должны быть в первом столбце tbl. Для получения информации о целях или переменных отклика, см. tbl.

net = trainNetwork(tbl,responseName,layers,options) обучает сеть для проблем регрессии и классификации. Предикторы должны быть в первом столбце tbl. responseName аргумент задает переменные отклика в tbl.

[net,info] = trainNetwork(___) также возвращает информацию об обучении с помощью любого из входных параметров в предыдущих синтаксисах.

Примеры

свернуть все

Загрузите данные как 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)});
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.9408

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

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

[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);
Warning: Support for GPU devices with Compute Capability 3.0 will be removed in a future MATLAB release. For more information on GPU support, see <a href="matlab:web('http://www.mathworks.com/help/parallel-computing/gpu-support-by-release.html','-browser')">GPU Support by Release</a>.

Загрузите выборочные данные, которые состоят из синтетических изображений рукописных цифр. Третий выход содержит соответствующие углы в градусах, которыми вращалось каждое изображение.

Загрузите учебные изображения как 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)))
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);
Warning: Support for GPU devices with Compute Capability 3.0 will be removed in a future MATLAB release. For more information on GPU support, see <a href="matlab:web('http://www.mathworks.com/help/parallel-computing/gpu-support-by-release.html','-browser')">GPU Support by Release</a>.

Проверьте производительность сети путем оценки точности предсказания тестовых данных. Используйте predict предсказать углы вращения изображений валидации.

[XTest,~,YTest] = digitTest4DArrayData;
YPred = predict(net,XTest);

Оцените производительность модели путем вычисления среднеквадратичной ошибки (RMSE) предсказанных и фактических углов вращения.

rmse = sqrt(mean((YTest - YPred).^2))
rmse = single
    6.0178

Обучите сеть LSTM глубокого обучения для классификации последовательностей к метке.

Загрузите японский набор данных Гласных как описано в [1] и [2]. XTrain массив ячеек, содержащий 270 последовательностей различной длины с размерностью признаков 12. 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 = 
  5x1 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 и определите максимальный номер эпох к 100.

Поскольку мини-пакеты малы с короткими последовательностями, центральный процессор лучше подходит для обучения. Установите 'ExecutionEnvironment' к 'cpu'. Чтобы обучаться на графическом процессоре, при наличии, устанавливает 'ExecutionEnvironment' к 'auto' (значение по умолчанию).

maxEpochs = 100;
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.9486

Входные параметры

свернуть все

Отобразите datastore в виде ImageDatastore объект.

ImageDatastore позволяет пакетное чтение JPG или упреждающую выборку использования файлов изображений PNG. Если вы используете пользовательскую функцию в чтении изображений, то ImageDatastore не выбирает с упреждением.

Совет

Используйте augmentedImageDatastore для эффективной предварительной обработки изображений для глубокого обучения включая изменение размеров изображений.

Не используйте readFcn опция imageDatastore когда эта опция обычно значительно медленнее.

Datastore для данных, которые не помещаются в память, и предварительной обработки.

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

Для сетей с несколькими входными параметрами datastore должен быть объединенным или преобразованным datastore, который возвращает массив ячеек с (numInputs+1) столбцы, содержащие предикторы и ответы, где numInputs количество сетевых входных параметров и numResponses количество ответов. Для i меньше чем или равный numInputs, iэлемент th массива ячеек соответствует входу layers.InputNames(i), где layers график слоев, задающий сетевую архитектуру. Последний столбец массива ячеек соответствует ответам.

Таблица ниже приводит хранилища данных, которые непосредственно совместимы с trainNetwork. Можно использовать другие встроенные хранилища данных в учебных нейронных сетях для глубокого обучения при помощи transform и combine функции. Эти функции могут преобразовать данные, считанные от хранилищ данных до таблицы или формата массива ячеек, требуемого trainNetwork. Для получения дополнительной информации смотрите Хранилища данных для Глубокого обучения.

Тип DatastoreОписание
CombinedDatastoreГоризонтально конкатенируйте данные, считанные из двух или больше базовых хранилищ данных.
TransformedDatastoreПреобразуйте пакеты считанных данных из базового datastore согласно вашему собственному конвейеру предварительной обработки.
AugmentedImageDatastoreПримените случайные аффинные геометрические преобразования, включая изменение размеров, вращение, отражение, сдвиг и перевод, для учебных глубоких нейронных сетей.
PixelLabelImageDatastoreПримените идентичные аффинные геометрические преобразования к изображениям, и соответствующие метки основной истины для того, чтобы обучить сети семантической сегментации (требует Computer Vision Toolbox™).
RandomPatchExtractionDatastoreИзвлеките пары случайных закрашенных фигур от изображений, или пиксельные изображения метки (требует Image Processing Toolbox™). Опционально можно применить идентичные случайные аффинные геометрические преобразования к парам закрашенных фигур.
DenoisingImageDatastoreПрименяйтесь случайным образом сгенерированный Гауссов шум для того, чтобы обучить сети шумоподавления (требует Image Processing Toolbox).
Пользовательский мини-пакетный datastoreСоздайте мини-пакеты последовательности, временных рядов или текстовых данных. Для получения дополнительной информации смотрите, Разрабатывают Пользовательский Мини-пакетный Datastore.

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

Входной параметрОписание
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, является количеством изображений.

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

Последовательность или данные временных рядов в виде 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 должен возвратить данные как массив ячеек последовательностей или таблицы, первый столбец которой содержит последовательности. Размерности данных о последовательности должны соответствовать приведенной выше таблице.

Ответы в виде категориального вектора меток, числового массива, массива ячеек категориальных последовательностей или массива ячеек числовых последовательностей. Формат Y зависит от типа задачи. Ответы не должны содержать NaNs.

Классификация

ЗадачаФормат
Отобразите классификациюN-by-1 категориальный вектор меток, где N является количеством наблюдений.
Классификация последовательностей к метке
Классификация от последовательности к последовательности

N-by-1 массив ячеек категориальных последовательностей меток, где N является количеством наблюдений. Каждая последовательность имеет то же количество временных шагов как соответствующая входная последовательность после применения SequenceLength опция к каждому мини-пакету независимо.

Для проблем классификации от последовательности к последовательности с одним наблюдением, sequences может также быть вектор. В этом случае, Y должна быть категориальная последовательность меток.

Регрессия

ЗадачаФормат
2D регрессия изображений
  • N-by-R матрица, где N является количеством изображений и R, является количеством ответов.

  • h-by-w-by-c-by-N числовой массив, где h, w и c являются высотой, шириной, и количеством каналов изображений, соответственно, и N, является количеством изображений.

3-D регрессия изображений
  • N-by-R матрица, где N является количеством изображений и R, является количеством ответов.

  • h-by-w-by-d-by-c-by-N числовой массив, где h, w, d и c являются высотой, шириной, глубиной, и количеством каналов изображений, соответственно, и N, является количеством изображений.

Регрессия Sequence-oneN-by-R матрица, где N является количеством последовательностей и R, является количеством ответов.
Регрессия от последовательности к последовательности

N-by-1 массив ячеек числовых последовательностей, где N является количеством последовательностей. Последовательности являются матрицами со строками R, где R является количеством ответов. Каждая последовательность имеет то же количество временных шагов как соответствующая входная последовательность после применения SequenceLength опция к каждому мини-пакету независимо.

Для проблем регрессии от последовательности к последовательности с одним наблюдением, sequences может быть матрица. В этом случае, Y должна быть матрица ответов.

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

Входные данные в виде таблицы, содержащей предикторы в первом столбце и ответы в остальном столбце или столбцах. Каждая строка в таблице соответствует наблюдению.

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

Классификация

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

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

Категориальная метка

Классификация последовательностей к метке

Путь к абсолютному или файлу прямого доступа к файлу MAT, содержащему последовательность или данные временных рядов.

Файл MAT должен содержать временные ряды, представленные матрицей со строками, соответствующими точкам данных и столбцам, соответствующим временным шагам.

Категориальная метка

Классификация от последовательности к последовательности

Путь к абсолютному или файлу прямого доступа к файлу MAT. Файл MAT должен содержать временные ряды, представленные категориальным вектором с соответствием записей меткам для каждого временного шага.

Для проблем классификации, если вы не задаете responseName, затем функция, по умолчанию, использует ответы во втором столбце tbl.

Регрессия

ЗадачаПредикторыОтветы
Отобразите регрессию
  • Путь к абсолютному или файлу прямого доступа к изображению в виде вектора символов

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

  • Один или несколько столбцов скалярных значений

  • Числовой вектор

  • Массив ячеек 1 на 1, содержащий 3-D числовой массив

Регрессия Sequence-one

Путь к абсолютному или файлу прямого доступа к файлу MAT, содержащему последовательность или данные временных рядов.

Файл MAT должен содержать временные ряды, представленные матрицей со строками, соответствующими точкам данных и столбцам, соответствующим временным шагам.

  • Один или несколько столбцов скалярных значений

  • Числовой вектор

Регрессия от последовательности к последовательности

Путь к абсолютному или файлу прямого доступа к файлу MAT. Файл MAT должен содержать временные ряды, представленные матрицей, где строки соответствуют ответам, и столбцы соответствуют временным шагам.

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

Ответы не могут содержать NaNs. Если данные о предикторе содержат NaNs, затем они распространены посредством обучения. Однако в большинстве случаев обучению не удается сходиться.

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

Имена переменных отклика во входной таблице в виде вектора символов, массива ячеек из символьных векторов или массива строк. Для проблем с одним ответом, responseName соответствующее имя переменной в tbl. Для проблем регрессии с переменными множественного ответа, responseName массив соответствующих имен переменных в tbl.

Типы данных: char | cell | string

Слоя сети в виде Layer массив или LayerGraph объект.

Чтобы создать сеть со всеми слоями, соединенными последовательно, можно использовать Layer массив как входной параметр. В этом случае возвращенной сетью является SeriesNetwork объект.

Сеть направленного графа без петель (DAG) имеет комплексную структуру, в которой слои могут иметь несколько вводов и выводов. Чтобы создать сеть DAG, задайте сетевую архитектуру как LayerGraph возразите и затем используйте тот график слоев в качестве входного параметра к trainNetwork.

Для списка встроенных слоев смотрите Список слоев глубокого обучения.

Опции обучения в виде TrainingOptionsSGDM, TrainingOptionsRMSProp, или TrainingOptionsADAM объект возвращен trainingOptions функция. Чтобы задать решатель и другие опции для сетевого обучения, используйте trainingOptions.

Выходные аргументы

свернуть все

Обучивший сеть, возвращенный как SeriesNetwork возразите или DAGNetwork объект.

Если вы обучаете сеть с помощью Layer массив как layers входной параметр, затем net SeriesNetwork объект. Если вы обучаете сеть с помощью LayerGraph возразите как входной параметр, затем net DAGNetwork объект.

Учебная информация, возвращенная как структура, где каждое поле является скаляром или числовым вектором с одним элементом на учебную итерацию.

Для проблем классификации, 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.

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

Больше о

свернуть все

Сохраните сети контрольной точки и возобновите обучение

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

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

Введенный в R2016a