【问题标题】:tensorflow conv2d memory consumption explain?tensorflow conv2d 内存消耗说明?
【发布时间】:2017-04-20 18:24:08
【问题描述】:
output = tf.nn.conv2d(input, weights, strides = [1,3,3,1], padding = 'VALID')

我的input 的形状是 200x225x225x1,weights 是 15x15x1x64。因此,output 的形状为 200x71x71x64,因为 (225-15)/3 + 1 = 71

Tensorboard 显示此操作总共消耗 768MB(见下图)。假设考虑到输入(38.6MB)、权重(0.06MB)和输出(246.2MB)的大小,总内存消耗不应超过300MB。那么剩下的内存消耗是从哪里来的呢?

【问题讨论】:

  • 你需要发布完整的(最少的)代码:你对输出做了什么,等等
  • @MaxB 我认为图中某个节点的内存消耗不受其后其他节点操作的影响?我的图非常复杂(多层网络),这是第一个接受占位符输入的节点。将尝试用更简单的网络重现问题。
  • 如果你在计算梯度,可能会被计算在节点内存使用中。

标签: memory tensorflow convolution tensorboard


【解决方案1】:

虽然我无法根据提供的信息重现您的图表和值,但您可能会看到由于在计算 Conv2D 期间具体化的中间值而导致的额外内存使用。仪器也可能不正确。 (例如,不会导致张量内存副本的重塑操作最终会复制 TF 节点统计工具中的“内存使用情况”。)如果没有可重现的测试用例,很难说更多。如果您确实觉得这是 TensorFlow 中的错误,请在 Github 上提出问题!

【讨论】:

    猜你喜欢
    • 2021-03-10
    • 2018-10-10
    • 2010-10-12
    • 1970-01-01
    • 2016-07-11
    • 2011-10-03
    • 2012-11-24
    • 2013-10-08
    • 1970-01-01
    相关资源
    最近更新 更多