分割计算的最佳方法是否太大而无法适应内存?

时间:2016-09-22 15:34:11

标签: memory-management tensorflow

当使用大于4的批量大小时(我通常以32运行),我的操作内存不足。我认为通过使用tf.split在批处理维度上拆分这一个操作,在批处理的子集上运行它,然后使用tf.concat重新组合,我可以很聪明。由于某种原因,这不起作用并导致OOM错误。为了清楚起见,如果我运行批量大小为4,它可以不分裂。相反,如果我运行批量大小为32,即使我要执行32路拆分以便每个单独的元素独立运行,我仍然会耗尽内存。 TF不安排单独的操作,以免它们压倒内存吗?如果不是,我是否需要明确设置某种条件依赖?

1 个答案:

答案 0 :(得分:1)

我发现功能性操作,在这种情况下特别是map_fn,满足了我的需求。通过将parallel_iterations选项设置为1(或一些可使计算适合内存的小数字),我能够控制并行度并避免内存不足。