Я тренирую глубокую нейронную сеть, используя следующую функцию Matlab:
net = trainNetwork (XTrain, YTrain, слои, параметры);
Могу ли я использовать команду trainNetwork для переобучения сети (не с нуля), используя последнее состояние сети из предыдущего обучения?
Делюсь частью кода:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
слои = [
imageInputLayer([1 Nin 5],"Имя","ввод изображения")
convolution2dLayer([1 3],32,"Name","conv","Padding","same")%
%batchNormalizationLayer('Имя','batchDown')
tanhLayer("Имя","tanh1)
convolution2dLayer([1 3],32,"Имя","conv","Заполнение","тот же","DilationFactor",[1 3])%
%batchNormalizationLayer('Имя','batchDown1')
tanhLayer("Имя","tanh2)
convolution2dLayer([1 3],2,"Имя","конв","Заполнение","такой же","DilationFactor",[1 9])%
слой регрессии];
options = trainingOptions('адам', …
«Начальная скорость обучения», 0,001, …
«MaxEpochs», 50000, …
«ExecutionEnvironment», «параллельно»,…
«Многословный», ложный, …
«Сюжеты», «прогресс обучения»);
Net1 = trainNetwork (XTrain1, YTrain1, слои, параметры);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
теперь я хотел бы снова тренироваться, получая Net2 с использованием новых данных и начиная обучение с этапа Net1.
Например:
Net2 = trainNetwork (XTrain2, YTrain2, слои, параметры);
однако мне не ясно, как запустить процесс обучения для Net2, используя этап Net1.
ОТВЕЧАТЬ
Matlabsolutions.com предоставляет последнюю Помощь по домашним заданиям MatLab, Помощь по заданию MatLab для студентов, инженеров и исследователей в различных отраслях, таких как ECE, EEE, CSE, Mechanical, Civil со 100% выходом. Код Matlab для BE, B.Tech , ME, M.Tech, к.т.н. Ученые со 100% конфиденциальностью гарантированы. Получите проекты MATLAB с исходным кодом для обучения и исследований.
Вы можете сделать следующее, если Net1 является SeriesNetwork:
Net2 = trainNetwork(XTrain2, YTrain2, Net1.Layers, options);
или если Net1 является DAGNetwork:
Net2 = trainNetwork(XTrain2, YTrain2, layerGraph(Net1), options);
Это будет обучать использование Net1 в качестве начальной сети.
Если вы также хотите предотвратить изменение весов в определенных слоях, вы можете использовать замораживание веса (см., как получить к нему доступ ниже). Эту функцию можно использовать для установки скорости обучения в этих слоях на ноль. Во время обучения trainNetwork не обновляет параметры «замороженных» слоев.
edit(fullfile(matlabroot,'examples','nnet','main','freezeWeights.m'))