【问题标题】:how to enable keras fit() multiprocessing properly?如何正确启用 keras fit() 多处理?
【发布时间】:2020-09-07 04:01:24
【问题描述】:

当我运行 fit()multiprocessing=True 时,我总是遇到死锁和以下警告:

WARNING:tensorflow:multiprocessing can interact badly with TensorFlow, causing nondeterministic deadlocks. For high performance data pipelines tf.data is recommended.

如何正确运行?

既然它说“tf.data”,我想知道将我的数据转换成这种格式是否会使多处理工作。具体是什么意思/如何转换它?

我的数据集:(可重现)

Input_shape, labels =(20,4), 6
LEN_X.LEN_Y = 20000.3000 
train_X,train_Y = np.asarray([np.random.random(Input_shape) for x in range(LEN_X )]), np.random.random((LEN_X ,labels))
validation_X,validation_Y = np.asarray([np.random.random(Input_shape) for x in range(LEN_Y)]), np.random.random((LEN_Y,labels))
sampleW = np.random.random((LEN_X ,1)) 

【问题讨论】:

    标签: python numpy tensorflow machine-learning keras


    【解决方案1】:

    The multiprocessing doesn't accelerate the model itself。它只会加速数据加载。当所有数据都在内存中时,数据加载延迟不是问题。

    不过,您仍然可以使用多处理,但您必须确保底层数据集是线程安全的,并且您必须仔细设计数据管道。这是相当耗时的。因此,我建议您加快模型本身的速度。

    为此,您应该调查:

    • 将除最后一层之外的所有激活都更改为 RELU。
    • 调整批量大小。 (最佳数字取决于您的硬件,几乎总是less than or equal to 32
    • 使用Batch normalization加速收敛。
    • 使用更高的学习率(注意不要过度执行此步骤)。
    • 如果您需要更快的卷积,请考虑使用 Kaggle notebooksvast.ai 进行支持 GPU 的计算。
    • 最后但同样重要的是,尝试使用更简单、更小的模型。

    如果您有任何其他问题,请在此处发表评论。
    干杯。

    【讨论】:

    • 我注意到,对于 Deep-Mind 的 AlphaZero (arxiv.org/pdf/1712.01815.pdf),他们使用了 4096 大小的 mini-batch。这只是他们在我们身上展示了他们的计算机能力,还是一个例外
    • @Arkleseisure 这是个好问题。我不确定,但也许他们使用了paper 的结果,该结果主张在同一年进行大批量。强化学习非常很难做到正确,我们甚至还不知道如何找到正确的批量大小。
    猜你喜欢
    • 2020-12-25
    • 2021-07-31
    • 2019-10-01
    • 1970-01-01
    • 2021-05-22
    • 2017-01-08
    • 2021-10-23
    • 2018-08-30
    • 1970-01-01
    相关资源
    最近更新 更多