하나의 그래픽 카드에서 여러 모델을 병렬로 교육하려고합니다. 그것을 달성하기 위해 나는 문제가 아닌 저장된 무게로부터 모델의 훈련을 재개 할 필요가있다. model.fit()
메서드는로드 된 모델이 켜져있는시기를 모델에 알려주는 initial_epoch 매개 변수도 있습니다. 그러나 TensorBoard 콜백을 모델의 교육을 모니터링하기 위해 fit()
메서드로 전달하면 Tensorboard에서 모든 데이터가 x = 0에 표시됩니다.Keras의 TensorBoard 콜백이 initial_epoch 적합성을 준수하지 않습니까?
이것을 극복하고 tensorboard에서 신기원을 조정하는 방법이 있습니까?
그건 그렇고 : 나는 Keras 2.0.6 및 Tensorflow 1.3.0을 실행 중입니다.
는 Tensorboard의 결과 그래프하지 않은 다음과 같습니다self.callbacks = [TensorBoardCallback(log_dir='./../logs/'+self.model_name, histogram_freq=0, write_graph=True, write_images=False, start_epoch=self.step_num)]
self.model.fit(x=self.data['X_train'], y=self.data['y_train'], batch_size=self.input_params[-1]['batch_size'], epochs=1, validation_data=(self.data['X_test'], self.data['y_test']), verbose=verbose, callbacks=self.callbacks, shuffle=self.hyperparameters['shuffle_data'], initial_epoch=self.step_num)
self.model.save_weights('./weights/%s.hdf5'%(self.model_name))
self.model.load_weights('./weights/%s.hdf5'%(self.model_name))
self.model.fit(x=self.data['X_train'], y=self.data['y_train'], batch_size=self.input_params[-1]['batch_size'], epochs=1, validation_data=(self.data['X_test'], self.data['y_test']), verbose=verbose, callbacks=self.callbacks, shuffle=self.hyperparameters['shuffle_data'], initial_epoch=self.step_num)
self.model.save_weights('./weights/%s.hdf5'%(self.model_name))
업데이트 :
첫 model.fit()
10에 epochs=10
전달 에포크 결과가 TensorBoard에 표시됩니다 (그림 참조).
그러나 모델을 다시로드하고 동일한 콜백이 연결된 상태로 실행하면 on_epoch_end
콜백 메소드가 호출되지 않습니다.
실행중인 케라의 버전은 무엇입니까? 나는 [master 's branch] (https://github.com/fchollet/keras/blob/master/keras/callbacks.py#L748)를보고 있으며 Tensorboard 콜백은 start_epoch 매개 변수가 아닙니다 (대신, 호출자에 의해'Tensorboard # on_epoch_end'에 전달됩니다. – ldavid
Keras 2.0.6을 실행 중이지만 게시물에서 언급했듯이 initial_epoch 매개 변수는 콜백이 아니라 케라의 model.fit() 메소드 – Raspel
에 전달됩니다. 나는'initial_epoch'가 적합하다는 것을 알고 있지만 코드 스 니펫의 첫 번째 줄은'self.callbacks = [TensorBoardCallback (... start_epoch = self.step_num)]'입니다. 이 병렬 교육에 대한 또 다른 질문 : – ldavid