在for循环中并行执行模型预测

时间:2020-06-05 09:00:11

标签: python keras parallel-processing

我想在for循环中对输入多次运行keras模型的预测。有没有一种方法可以使for循环并行化,因为循环的每个迭代都彼此独立?我只想将每个迭代的预测存储在mc_predictions数组中。

mc_predictions = []
for i in range(100):
    y_p = model.predict(x)
    mc_predictions.append(y_p)        

在我将模型的训练属性设置为True的情况下,我正在模型中使用辍学层。因此,每次我都会得到不同的结果,因为在每次迭代中都会停用不同的神经元。我在这里使用蒙特卡洛估计。

2 个答案:

答案 0 :(得分:2)

Q “由于循环的每个迭代都彼此独立,是否有办法并行化 for循环?” < / p>

好吧,在实际的Parent实例内部没有深入了解。

model实例很容易成为全状态系统,并且每次调用model方法都会改变其内部状态的一部分...因此如果不重新检查.predict()的实现,就不能确定先验吗?
– user3666197 6 min ago

预告片was添加了“ ...在每次迭代中,不同的神经元将被停用。” 情况发生了变化。

没有办法使按定义的纯 model 过程“发生”为True- [SERIAL] 。< / p>

Q.E.D。


但是这真的是一个纯串行过程吗?我的意思是,每个迭代都是独立的。只要使随机神经元失活,迭代中失活的神经元就没有关系。
Crazzay1903 4 hours ago

最有可能的情况下,,这是一个纯粹的 [PARALLEL] 过程(除非以某种方式并经过充分证明不能这样做)是-但随后,它也将陷入无法保留可重复且可重新验证的科学的陷阱(有人可能会辩称它可能在法律上成为一种原则上不确定的随机过程- 公平,确定 -然而,即使如此,也证明了已经实现了这种鲁棒的不确定性随机过程,从而能够证明它在某些True- < strong> [SERIAL] 流程的实现(如果经过尝试并证明是这样的话),但是 [PARALLEL] 方法必须,并且否则,与任何严格的,定量支持的公平科学方法相比,它更像是千里眼,不是吗?)这不是目标,是吗?)

Q.E.D。

答案 1 :(得分:0)

在每次迭代中您将获得相同的结果,我不明白为什么要这样做。

也许您正在寻找分层k折法之类的方法,您可以在模型中训练和验证不同数据样本。