2017-12-07 1 views
0

트레이너와 필요한 모든 구성 요소를 보관하는 가장 좋은 방법은 무엇입니까?저장/재 장전 CNTK 트레이너, 모델, 입력, 출력

1. 보관하십시오 trainer

  • 저장 체크 포인트 : 또한 별도로 모델을 저장할의 trainer.save_checkpoint(filename, external_state={}) 기능
  • 사용 : z.save(filename) 방법을 사용, 모든 cntk 작업이 있습니다. z = trainer.model을받을 수도 있습니다.

2. 다시로드 : 사용 C.load_model(...) :

  • 모델을 복원합니다. (Cntk 1에서 deprecated persist 네임 스페이스에 대해 혼동하지 마십시오.)
  • 복원 된 모델에서 입력을 가져옵니다.
  • 트레이너 자체를 복원하십시오. 예 : trainer.restore_from_checkpoint을 사용하십시오. 표시된 here. 문제는,이 함수는 이미 트레이너와 같은 방식으로 초기화되어야하는 트레이너 객체를 필요로한다는 것입니다.

이제 트레이너가 사용하는 오류 기능으로 들어가는 레이블 입력을 어떻게 복원합니까? 다음 코드에서는 일단 변수를 저장 한 후에 복원해야한다고 생각되는 변수를 표시했습니다.

z = C.layers.Dense(....) 
loss = error = C.squared_error(z, **l**) 
**trainer** = C.Trainer(**z**, (loss, error), [mylearner], my_tensorboard_writer) 

답변

0

당신은 당신의 트레이너를 복원 할 수 있지만, 사실은 그냥 내 모델 m를로드하는 것을 선호합니다. 간단한 이유는 트레이너의 다른 모든 매개 변수를보다 쉽게 ​​변경할 수 있기 때문에 완전히 새로운 트레이너를 만드는 것이 훨씬 쉽다는 것입니다. 다음 (네트워크는 하나의 입력이있는 경우) 당신은로드 모델의 입력 변수를 얻을 수 있습니다 : 다음

input_var = m.arguments[0] 

당신은 당신의 모델의 출력이 필요합니다

output = m(input_var) 

및 손실 함수를 정의 패를 설정, 당신은에서가 트레이너를 다시 만들 수 있습니다 모델과 손실 함수를 사용하여

C.squared_error(output, target_output) 

: 대상 출력 target_output를 사용하여 적립 비율 등 원하는만큼