这个例子展示了如何在训练一个深度学习网络的同时保存检查点网络,并从以前保存的网络恢复训练。
将样本数据加载为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
。
图;烫= randperm(大小(XTrain, 4), 20);为我= 1:20子图(4,5,i);imshow(xtrain(::::,perm(i))));结束
定义神经网络架构。
layers = [imageInputLayer([28 28 1])卷积2dlayer (3,8,“填充”,'相同的'maxPooling2dLayer(2,“步”,2)卷积2dlayer(3,16,“填充”,'相同的'maxPooling2dLayer(2,“步”32岁的,2)convolution2dLayer (3“填充”,'相同的')BatchnormalizationLayer Ruilulayer普通Pooling2Dlayer(7)全连接榜(10)SoftmaxLayer分类层];
指定随机动量梯度下降(SGDM)的训练选项,并指定保存检查点网络的路径。
checkpointPath = pwd;选择= trainingOptions (“个”,…“InitialLearnRate”, 0.1,…“MaxEpochs”, 20岁,…“详细”,错误的,…“阴谋”,“训练进步”,…“洗牌”,'每个时代',…“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岁的…“详细”,错误的,…“阴谋”,“训练进步”,…“洗牌”,'每个时代',…“CheckpointPath”, checkpointPath);
使用您加载的新培训选项的检查点网络层重新进行培训。如果检查点网络是DAG网络,则使用分层图(网)
作为论据而不是net.layers.
。
net2 = trainNetwork (XTrain YTrain、net.Layers选项);