同时运行model.fit()和TensorBoard?

时间:2019-12-23 01:53:15

标签: python multithreading tensorboard tf.keras

我有一个有趣的问题,关于同时运行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()无法正常工作。

1 个答案:

答案 0 :(得分:1)

以下是一个我认为可以满足您需要的工作示例。我正在使用multiprocessing模块中的Process。请注意,在调用target函数时,将模型定义为Process的{​​{1}}内的函数似乎很重要,如{{3 }}。我尝试在函数调用之外定义模型,这将初始化模型,但随后训练将无限期地停止。

当我在笔记本电脑上运行该程序时,张量板需要一点时间才能开始,但是通常在培训开始时会启动epoch 70张量板,并且它将继续运行,直到您用Ctrl + C杀死它为止。

fit