我在使用Tensorflow后端的Keras在我的机器上训练一个非常庞大的数据集上的LSTM模型。我的机器有16个核心。在训练模型时,我注意到所有核心的负载都低于40%。
我查阅了不同的来源寻找解决方案,并尝试在后端指定要使用的核心数,如下所示:
config = tf.ConfigProto(device_count={"CPU": 16})backend.tensorflow_backend.set_session(tf.Session(config=config))
即使这样做了,负载仍然没有变化。
这是因为模型太小了吗?一个epoch大约需要5分钟。如果能充分利用所有核心,速度可以提高。
如何告诉Keras或Tensorflow使用所有可用的16个核心来训练模型?
我已经查看了这些StackOverflow问题并尝试了那里提到的解决方案,但没有帮助。
回答:
您具体是如何训练模型的?您可能需要考虑使用model.fit_generator()
,但使用Keras的Sequence
对象而不是自定义生成器。这样可以安全地使用多处理,并且会导致所有核心都被使用。
您可以查看Keras文档中的示例。