从Checkpoint Network恢复培训
这个例子展示了如何在训练深度学习网络的同时保存检查点网络,并从先前保存的网络恢复训练。
加载样例数据
将样例数据加载为4-D数组。digitTrain4DArrayData
将数字训练集加载为4-D数组数据。XTrain
是一个28 × 28 × 1 × 5000数组,其中28是图像的高度,28是图像的宽度。1为通道数,5000为手写数字合成图像数。YTrain
是包含每个观察值的标签的分类向量。
[XTrain,YTrain] = digitTrain4DArrayData;大小(XTrain)
ans =1×428 28 1 5000
中显示一些图像XTrain
.
图;perm = randperm(size(XTrain,4),20);为I = 1:20 subplot(4,5, I);imshow (XTrain(:,:,:,烫(我)));结束
定义网络架构
定义神经网络架构。
图层= [imageInputLayer([28 28 1])卷积2dlayer (3,8,“填充”,“相同”maxPooling2dLayer(2,“步”2) convolution2dLayer(16日“填充”,“相同”maxPooling2dLayer(2,“步”32岁的,2)convolution2dLayer (3“填充”,“相同”) batchNormalizationLayer reluLayer averagePooling2dLayer(7) fullyConnectedLayer(10) softmaxLayer classificationLayer];
指定培训选项和培训网络
指定带有动量的随机梯度下降(SGDM)的训练选项,并指定保存检查点网络的路径。
checkpointPath = pwd;选项= trainingOptions(“个”,...“InitialLearnRate”, 0.1,...“MaxEpochs”, 20岁,...“详细”假的,...“阴谋”,“训练进步”,...“洗牌”,“every-epoch”,...“CheckpointPath”, checkpointPath);
培训网络。trainNetwork
如果有GPU可用,则使用GPU。如果没有可用的GPU,则使用CPU。trainNetwork
每个纪元保存一个检查点网络,并自动为检查点文件分配唯一名称。
net1 = trainNetwork(XTrain,YTrain,图层,选项);
负载检查点网络和简历培训
假设训练中断并且没有完成。您可以加载最后一个检查点网络,并从该点恢复训练,而不是从头开始重新开始训练。trainNetwork
保存带有表单上文件名的检查点文件net_checkpoint__195__2018_07_13__11_59_10.mat
,其中195为迭代数,2018年_07_13
日期和11 _59_10
是时候了trainNetwork
拯救了网络。检查点网络有变量名网
.
将检查点网络加载到工作区中。
负载(“net_checkpoint__195__2018_07_13__11_59_10.mat”,“净”)
指定训练选项并减少最大epoch数。您还可以调整其他训练选项,例如初始学习率。
选项= trainingOptions(“个”,...“InitialLearnRate”, 0.1,...“MaxEpochs”15岁的...“详细”假的,...“阴谋”,“训练进步”,...“洗牌”,“every-epoch”,...“CheckpointPath”, checkpointPath);
使用新训练选项加载的检查点网络层恢复训练。如果检查点网络是DAG网络,则使用layerGraph(净)
作为论点而不是网层
.
net2 = trainNetwork(XTrain,YTrain,net.Layers,options);