검사 지점 신경망에서 훈련 재개하기
이 예제에서는 딥러닝 신경망을 훈련시킬 때 검사 지점 신경망을 저장하고 이전에 저장한 신경망에서 훈련을 재개하는 방법을 보여줍니다.
샘플 데이터 불러오기
샘플 데이터를 4차원 배열로 불러옵니다. digitTrain4DArrayData는 숫자 훈련 세트를 4차원 배열 데이터로 불러옵니다. XTrain은 28×28×1×5000 배열입니다. 여기서 28은 영상의 높이이고 28은 영상의 너비입니다. 1은 채널 개수이고 5,000은 손으로 쓴 숫자를 표시하는 합성 영상의 개수입니다. YTrain은 각 관측값에 대한 레이블을 포함하는 categorical형 벡터입니다.
[XTrain,YTrain] = digitTrain4DArrayData; size(XTrain)
ans = 1×4
28 28 1 5000
XTrain의 영상 몇 개를 표시합니다.
figure; perm = randperm(size(XTrain,4),20); for i = 1:20 subplot(4,5,i); imshow(XTrain(:,:,:,perm(i))); end

신경망 아키텍처 정의하기
신경망 아키텍처를 정의합니다.
layers = [
imageInputLayer([28 28 1])
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
averagePooling2dLayer(7)
fullyConnectedLayer(10)
softmaxLayer
classificationLayer];훈련 옵션을 지정하고 신경망 훈련시키기
SGDM(모멘텀을 사용한 확률적 경사하강법)의 훈련 옵션을 지정하고 검사 지점 신경망을 저장할 경로를 지정합니다.
checkpointPath = pwd; options = trainingOptions('sgdm', ... 'InitialLearnRate',0.1, ... 'MaxEpochs',20, ... 'Verbose',false, ... 'Plots','training-progress', ... 'Shuffle','every-epoch', ... 'CheckpointPath',checkpointPath);
신경망을 훈련시킵니다. trainNetwork는 GPU를 사용할 수 있으면 GPU를 사용합니다. GPU를 사용할 수 없으면 CPU를 사용합니다. trainNetwork는 매 Epoch마다 하나의 검사 지점 신경망을 저장하고 검사 지점 파일에 자동으로 고유한 이름을 할당합니다.
net1 = trainNetwork(XTrain,YTrain,layers,options);

검사 지점 신경망을 불러와서 훈련 재개하기
훈련이 중단되어서 완료되지 않았다고 가정하겠습니다. 훈련을 처음부터 시작하는 대신 마지막 검사 지점 신경망을 불러와서 그 지점부터 훈련을 재개할 수 있습니다. trainNetwork는 검사 지점 파일을 net_checkpoint__195__2018_07_13__11_59_10.mat 형식의 파일 이름으로 저장합니다. 여기서 195는 반복 번호이고 2018_07_13은 날짜이고 11_59_10은 trainNetwork가 신경망을 저장한 시간입니다. 검사 지점 신경망은 net이라는 변수 이름을 갖습니다.
검사 지점 신경망을 작업 공간으로 불러옵니다.
load('net_checkpoint__195__2018_07_13__11_59_10.mat','net')
훈련 옵션을 지정하고 최대 Epoch 횟수를 줄입니다. 초기 학습률과 같은 다른 훈련 옵션을 조정할 수도 있습니다.
options = trainingOptions('sgdm', ... 'InitialLearnRate',0.1, ... 'MaxEpochs',15, ... 'Verbose',false, ... 'Plots','training-progress', ... 'Shuffle','every-epoch', ... 'CheckpointPath',checkpointPath);
불러온 검사 지점 신경망 계층의 훈련을 새로운 훈련 옵션을 사용하여 재개합니다. 검사 지점 신경망이 DAG 신경망인 경우, net.Layers 대신 layerGraph(net)을 인수로 사용하십시오.
net2 = trainNetwork(XTrain,YTrain,net.Layers,options);

참고 항목
trainnet | trainingOptions | dlnetwork