在Tensorflow-gpu中构建大型CNN,我观察到轻微的输入更改后,内存使用量就大大增加了。
举一个简单的例子:
import tensorflow as tf
size = 252
x = tf.random_uniform((1, size, size, 3))
x = tf.layers.conv2d(x, 64, 3, 1, padding='SAME')
x = tf.layers.conv2d(x, 64, 3, 2, padding='SAME')
x = tf.layers.conv2d(x, 64, 3, 1, padding='SAME')
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
sess.run(x)
print(sess.run(tf.contrib.memory_stats.MaxBytesInUse())/1e9)
大约需要646 MB
设置size=253
后,内存使用量将跃升至2.21 GB
如何解释这种观察?有办法预防吗?
我正在使用Ubuntu 16.04,Tensorflow-gpu 1.9,cuda-9.0,GPU TITAN X(Pascal)