Main Content

딥러닝 훈련 진행 상황 모니터링하기

이 예제에서는 딥러닝 신경망의 훈련 진행 상황을 모니터링하는 방법을 보여줍니다.

딥러닝을 위해 신경망을 훈련시킬 때, 훈련 중에 다양한 메트릭을 플로팅하면 훈련이 어떻게 진행되고 있는지 알 수 있습니다. 예를 들어, 신경망 정확도가 향상되고 있는지, 향상되는 속도는 어느 정도인지, 신경망이 훈련 데이터를 과적합하기 시작하고 있는지 등을 확인할 수 있습니다.

이 예제에서는 trainnet 함수를 사용하여 훈련된 신경망의 훈련 진행 상황을 모니터링하는 방법을 보여줍니다. 사용자 지정 훈련 루프를 사용하여 신경망을 훈련시키는 경우 trainingProgressMonitor 객체를 대신 사용하여 훈련 중에 메트릭을 플로팅합니다. 자세한 내용은 Monitor Custom Training Loop Progress 항목을 참조하십시오.

trainingOptions에서 Plots 훈련 옵션을 "training-progress"로 설정하고 신경망 훈련을 시작하면 trainnet 함수는 Figure를 만들고 각 반복에서 훈련 메트릭을 표시합니다. 각 반복은 기울기의 추정값이자 신경망 파라미터의 업데이트입니다. trainingOptions에 검증 데이터를 지정하면 trainnet이 신경망을 검증할 때마다 Figure에 검증 메트릭이 표시됩니다. Figure에는 손실과 Metrics 이름-값 옵션으로 지정된 메트릭이 플로팅됩니다. 기본적으로 플롯에는 선형 스케일이 사용됩니다. y축에 로그 스케일을 지정하려면 좌표축 도구 모음에서 로그 스케일 버튼을 선택합니다.

훈련 중에 오른쪽 위 코너에 있는 중지 버튼을 클릭하면 훈련을 중지하고 신경망의 현재 상태를 반환할 수 있습니다. 중지 버튼을 클릭하면 훈련이 완료되기까지 얼마간의 시간이 걸릴 수 있습니다. 훈련이 완료되면 trainnet은 훈련된 신경망을 반환합니다.

메트릭 값이 최적 검증으로 나온 반복에 해당하는 최종 값을 얻으려면 OutputNetwork 훈련 옵션을 "best-validation"으로 지정하십시오. 여기서 최적화되는 메트릭은 ObjectiveMetricName 훈련 옵션으로 지정됩니다. 마지막 훈련 반복에 해당하는 최종 메트릭을 얻으려면 OutputNetwork 훈련 옵션을 "last-iteration"으로 지정하십시오.

창의 오른쪽에서 훈련 시간과 설정에 대한 정보를 확인합니다. 훈련 옵션에 대한 자세한 내용은 파라미터를 설정하고 컨벌루션 신경망 훈련시키기 항목을 참조하십시오.

훈련 진행 상황 플롯을 저장하려면 훈련 창에서 영상으로 내보내기를 클릭하십시오. 플롯은 PNG, JPEG, TIFF 또는 PDF 파일로 저장할 수 있습니다. 좌표축 도구 모음을 사용하여 개별 플롯을 저장할 수도 있습니다.

훈련 중에 훈련 진행 상황 플로팅하기

신경망을 훈련시키고 훈련 중에 훈련 진행 상황을 플로팅합니다.

MAT 파일 DigitsDataTrain.matDigitsDataTest.mat에서 훈련 데이터와 테스트 데이터를 각각 불러옵니다. 훈련 및 테스트 데이터 세트는 각각 5,000개의 영상을 포함합니다.

load DigitsDataTrain.mat
load DigitsDataTest.mat

dlnetwork 객체를 만듭니다.

net = dlnetwork;

분류 가지의 계층을 지정한 후 신경망에 추가합니다.

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
    fullyConnectedLayer(10)
    softmaxLayer];

net = addLayers(net,layers);

신경망 훈련 옵션을 지정합니다. 훈련 중에 규칙적인 간격으로 신경망을 검증하려면 검증 데이터를 지정하십시오. 정확도와 F-점수에 대한 메트릭 값을 기록합니다. 훈련 중에 훈련 진행 상황을 플로팅하려면 Plots 훈련 옵션을 "training-progress"로 설정하십시오.

options = trainingOptions("sgdm", ...
    MaxEpochs=8, ...
    Metrics = ["accuracy","fscore"], ...
    ValidationData={XTest,labelsTest}, ...
    ValidationFrequency=30, ...
    Verbose=false, ...
    Plots="training-progress");

신경망을 훈련시킵니다.

net = trainnet(XTrain,labelsTrain,net,"crossentropy",options);

참고 항목

| |

관련 항목