如何处理TensorFlow会话以同时训练多个Keras模型?

Syz*_*ygy 7 session keras tensorflow

我需要同时训练多个Keras模型.我正在使用TensorFlow后端.问题是,当我尝试同时训练两个模型时,我得到了Attempting to use uninitialized value.

错误并不是真正相关,主要问题似乎是Keras强迫在同一个会话中使用相同的图创建两个模型,因此它会发生冲突.

我是TensorFlow的新手,但我的直觉是答案很简单:你必须为每个Keras模型创建一个不同的会话,并在他们自己的会话中训练它们.有人可以解释一下它将如何完成?

我真的希望有可能在使用Keras时解决这个问题,而不是在纯TensorFlow中编写所有内容.任何解决方法也将受到赞赏.

小智 0

我使用 python 多处理并行训练多个模型,https://docs.python.org/3.4/library/multiprocessing.html

我有一个带有两个参数的函数,一个输入队列和一个输出队列,该函数在每个进程中运行。该函数具有以下结构:

def worker(in_queue, out_queue):
    import keras

    while True:
        parameters = in_queue.get()
        network_parameters = parameters[0]
        train_inputs = parameters[1]
        train_outputs = parameters[2]
        test_inputs = parameters[3]
        test_outputs = parameters[4]

        build the network based on the given parameters

        train the network

        test the network if required

        out_queue.put(result)
Run Code Online (Sandbox Code Playgroud)

从主 python 脚本中根据需要启动尽可能多的进程(并创建尽可能多的输入和输出队列)。通过调用其输入队列上的 put 向工作人员添加作业,并通过调用其输出队列上的 get 来获取结果。