张量流中变量初始化后的OOM错误

时间:2018-05-30 14:40:28

标签: tensorflow

这是我的错误:

OOM when allocating tensor of shape [7,7,512,4096] and type float
 [[Node: W6/Adam/Initializer/zeros = Const[dtype=DT_FLOAT, value=Tensor<type: float shape: [7,7,512,4096] values: [[[0 0 0]]]...>, _device="/job:localhost/replica:0/task:0/device:GPU:0"]()]]

在追溯中我可以看到它是由这一行引起的:

sess.run(tf.global_variables_initializer())

所有参数组合使用大约1,5Gb的内存。我有4 Gb的内存。

我已经尝试过没有成功:

config.gpu_options.allocator_type = 'BFC'
config.gpu_options.per_process_gpu_memory_fraction = 0.40
config.gpu_options.allow_growth = True

我该如何解决?

编辑:

我如何计算已用内存量?

    var_sizes = [np.product(list(map(int, v.shape))) * v.dtype.size
         for v in tf.get_collection(tf.GraphKeys.GLOBAL_VARIABLES)]
    print(sum(var_sizes) / (1024 ** 2), 'MB')

1 个答案:

答案 0 :(得分:1)

在计算中,计算保存变量所需的内存量。但是,这只是您需要的内存的一小部分。你特别想念:

  • 神经元输出(即特征)。
  • 与模型参数和功能相关的成本函数的渐变。

Tensorflow会尽可能地尝试优化内存,但这会给你一个大概的估计。因此,如果你总共需要超过4Gb,我不会感到惊讶。