我有一个有趣的问题,关于同时运行model.fit()和tensorboard。
我在Internet上做了一些有关“线程”,“处理”,“多处理”的研究,尝试了一些示例,但无法解决我的问题。
我想同时运行TensorBoard和model.fit():
from threading import Thread
import subprocess
def startTensorboard(log_dir):
# Tried both
os.system('tensorboard --logdir '+ log_dir)
# subprocess.call(['tensorboard', '--logdir', log_dir])
tensorboard = tf.keras.callbacks.TensorBoard(log_dir='logs', histogram_freq=0,
write_graph=True, write_images=False)
Thread(target = startTensorboard('logs')).start()
Thread(target = model.fit_generator(
self.train_data_gen,
steps_per_epoch=self.STEPS_PER_EPOCH,
validation_data = self.test_data_gen,
validation_steps = self.VALID_STEPS_PER_EPOCH,
epochs=self.epoch,
callbacks=[tensorboard])).start()
有可能吗?当我运行此代码时,TensorBoard正在运行,但model.fit()无法正常工作。
答案 0 :(得分:1)
以下是一个我认为可以满足您需要的工作示例。我正在使用multiprocessing模块中的Process
。请注意,在调用target
函数时,将模型定义为Process
的{{1}}内的函数似乎很重要,如{{3 }}。我尝试在函数调用之外定义模型,这将初始化模型,但随后训练将无限期地停止。
当我在笔记本电脑上运行该程序时,张量板需要一点时间才能开始,但是通常在培训开始时会启动epoch 70张量板,并且它将继续运行,直到您用Ctrl + C杀死它为止。
fit