训练时出现 OOM 错误,但验证时不会出现 OOM 错误

时间:2020-12-25 15:37:38

标签: python tensorflow keras

A 有一个大约 120 层的深度卷积网络。我尝试成功训练 [7,368,368,1] 个批次。此外,我可以轻松地将 [1,2700,2700,1] 作为验证步骤的输入。但是我不能将批量大小从 7 增加到更高(例如 20),tensorflow 失败

 OOM when allocating tensor with shape[20,10,368,368].

怎么可能,在验证时我们有 [1,10,2700,2700] 张量?

2 个答案:

答案 0 :(得分:0)

您只对验证数据集进行前向传递。但是你在训练中向前和向后传递。向后传递可能会使用更多资源。

答案 1 :(得分:0)

验证中,我们只有前向传递,因此数据只是向前流动,无需保留前一层的输出。但是在训练中,您需要保留一些层输出并在向后传递中使用它们(另一方面,我认为 tensorflow 在每次迭代中保持参数梯度以将它们传递给优化器)。结果,训练将使用更多的内存