CNTK-모델 모니터링

이 장에서는 CNTK에서 모델을 모니터링하는 방법을 이해합니다.

소개

이전 섹션에서는 NN 모델에 대한 몇 가지 유효성 검사를 수행했습니다. 그러나 훈련 중에 모델을 모니터링하는 것도 필요하고 가능합니까?

예, 이미 사용했습니다 ProgressWriter클래스를 사용하여 모델을 모니터링 할 수 있으며 더 많은 방법이 있습니다. 방법에 대해 자세히 알아보기 전에 먼저 CNTK의 모니터링이 작동하는 방식과이를 사용하여 NN 모델의 문제를 감지하는 방법을 살펴 보겠습니다.

CNTK의 콜백

실제로 훈련 및 검증 중에 CNTK를 사용하면 API의 여러 지점에서 콜백을 지정할 수 있습니다. 먼저 CNTK가 콜백을 호출하는시기를 자세히 살펴 보겠습니다.

CNTK가 콜백을 호출 할 때?

CNTK는 훈련 및 테스트 세트 순간에 콜백을 호출합니다.

  • 미니 배치가 완료되었습니다.

  • 훈련 중에 데이터 세트에 대한 전체 스윕이 완료됩니다.

  • 미니 배치 테스트가 완료되었습니다.

  • 테스트 중에 데이터 세트에 대한 전체 스윕이 완료됩니다.

콜백 지정

CNTK로 작업하는 동안 API의 여러 지점에서 콜백을 지정할 수 있습니다. 예를 들면-

손실 기능에서 기차를 호출 할 때?

여기서 손실 함수에 대해 train을 호출 할 때 다음과 같이 callbacks 인수를 통해 일련의 콜백을 지정할 수 있습니다.

training_summary=loss.train((x_train,y_train),
parameter_learners=[learner],
callbacks=[progress_writer]),
minibatch_size=16, max_epochs=15)

미니 배치 소스로 작업하거나 수동 미니 배치 루프를 사용할 때

이 경우 모니터링 목적으로 콜백을 지정할 수 있습니다. Trainer 다음과 같이-

from cntk.logging import ProgressPrinter
callbacks = [
   ProgressPrinter(0)
]
Trainer = Trainer(z, (loss, metric), learner, [callbacks])

다양한 모니터링 도구

다양한 모니터링 도구에 대해 알아 보겠습니다.

ProgressPrinter

이 튜토리얼을 읽으면서 ProgressPrinter가장 많이 사용되는 모니터링 도구입니다. 일부 특성ProgressPrinter 모니터링 도구는-

ProgressPrinter클래스는 기본 콘솔 기반 로깅을 구현하여 모델을 모니터링합니다. 우리가 원하는 디스크에 기록 할 수 있습니다.

분산 교육 시나리오에서 작업하는 동안 특히 유용합니다.

또한 Python 프로그램의 출력을보기 위해 콘솔에 로그인 할 수없는 시나리오에서 작업하는 동안 매우 유용합니다.

다음 코드의 도움으로 다음의 인스턴스를 만들 수 있습니다. ProgressPrinter

ProgressPrinter(0, log_to_file=’test.txt’)

우리는 이전 섹션에서 보았던 출력을 얻을 것입니다.

Test.txt
CNTKCommandTrainInfo: train : 300
CNTKCommandTrainInfo: CNTKNoMoreCommands_Total : 300
CNTKCommandTrainBegin: train
-------------------------------------------------------------------
average since average since examples
loss last metric last
------------------------------------------------------
Learning rate per minibatch: 0.1
1.45 1.45 -0.189 -0.189 16
1.24 1.13 -0.0382 0.0371 48
[………]

텐서 보드

ProgressPrinter를 사용할 때의 단점 중 하나는 시간이 지남에 따라 손실 및 메트릭 진행이 얼마나 어려운지 잘 볼 수 없다는 것입니다. TensorBoardProgressWriter는 CNTK의 ProgressPrinter 클래스에 대한 훌륭한 대안입니다.

사용하기 전에 다음 명령을 사용하여 먼저 설치해야합니다.

pip install tensorboard

이제 TensorBoard를 사용하려면 다음을 설정해야합니다. TensorBoardProgressWriter 다음과 같이 훈련 코드에서-

import time
from cntk.logging import TensorBoardProgressWriter
tensorbrd_writer = TensorBoardProgressWriter(log_dir=’logs/{}’.format(time.time()),freq=1,model=z)

close 메소드를 호출하는 것이 좋습니다. TensorBoardProgressWriter 교육을 마친 후 인스턴스 NN모델.

우리는 시각화 할 수 있습니다 TensorBoard 다음 명령의 도움으로 데이터 로깅-

Tensorboard –logdir logs