python - 训练时出现 OOM 错误,但验证时没有
问题描述
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]
张量?
解决方案
在验证时,我们只有前向传递,所以数据只是向前流动,不需要保留前一层的输出。但是在训练中,您需要保留一些层输出并在反向传递中使用它们(另一方面,我认为 tensorflow 在每次迭代中保持参数梯度以将它们传递给优化器)。结果,训练将使用更多的 RAM
推荐阅读
- python - 通过根据另一列中的条件更改一列中的值返回错误
- javascript - 无法向 webhook 发出 POST 请求
- python - 如何获取文本文件中十六进制数的长度
- flutter - 颤振应用程序在首次启动时不会立即从共享首选项中获取数据
- angular - 角度显示全文按钮打开所有 div 容器
- react-native - 如果数据是通过“Promis”返回的,则每次执行“onEndReached”后,Flastlist 都会移动到顶部
- url - 带有 # 字符的邮递员请求未响应正确的输出
- python - 如何根据主机名每小时计算平均disk_available,python
- amazon-web-services - Jenkins slave 无法通过 yum 安装 java
- django - 重新启动 gunicorn 和 nginx 不会反映拉取请求后的更改