Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 是否同时运行model.fit()和TensorBoard?_Python_Multithreading_Tensorboard_Tf.keras - Fatal编程技术网

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

Python 是否同时运行model.fit()和TensorBoard?,python,multithreading,tensorboard,tf.keras,Python,Multithreading,Tensorboard,Tf.keras,关于同时运行model.fit()和tensorboard,我有一个有趣的问题 我在互联网上做了一些关于“线程”、“处理”、“多重处理”的研究,尝试了一些例子,但没有解决我的问题 我想同时运行TensorBoard和model.fit(),如下所示: from threading import Thread import subprocess def startTensorboard(log_dir): # Tried both os.system('tensorboard -

关于同时运行model.fit()和tensorboard,我有一个有趣的问题

我在互联网上做了一些关于“线程”、“处理”、“多重处理”的研究,尝试了一些例子,但没有解决我的问题

我想同时运行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()不起作用

下面是一个工作示例,我认为它符合您的要求。我正在使用模块中的
过程
。请注意,在调用
fit
函数时,在您设置为
Process
目标的函数中定义模型似乎很重要,如中所示。我尝试在函数调用之外定义模型,它将初始化模型,但是训练将无限期地挂起

当我在笔记本电脑上运行这个程序时,tensorboard需要一点时间来启动,但通常在训练开始时,tensorboard已经启动,并且它会继续运行,直到你用Ctrl+C将其杀死

import os
import numpy as np
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from multiprocessing import Process


def startTensorboard(logdir):
    # Start tensorboard with system call
    os.system("tensorboard --logdir {}".format(logdir))


def fitModel():
    # Create your model
    model = Sequential()
    model.add(Dense(32, activation='relu', input_dim=100))
    model.add(Dense(1, activation='sigmoid'))
    model.compile(optimizer='rmsprop',
                  loss='binary_crossentropy',
                  metrics=['accuracy'])

    # Some mock training data
    data = np.random.random((1000, 100))
    labels = np.random.randint(2, size=(1000, 1))

    # Run the fit function
    model.fit(data, labels, epochs=100, batch_size=32)


if __name__ == '__main__':
    # Run both processes simultaneously
    Process(target=startTensorboard, args=("logs",)).start()
    Process(target=fitModel).start()