如何在TensorFlow中实现卷积RNN?

时间:2016-08-25 18:07:16

标签: tensorflow

在TensorFlow中,假设我有一个图像,我想多次应用相同的卷积内核。例如,我想做类似以下的事情:

for i in range(5):
    output = tf.nn.relu(tf.nn.bias_add(tf.nn.conv2d(output, weights, [1,1,1,1]), bias))

但如果我有很多循环,这会很快耗尽内存。我认为这是因为系统正在分配足够的内存来同时保存整个序列。

这样做的替代方法是什么?

谢谢!

1 个答案:

答案 0 :(得分:1)

张量流的工作方式如下:

创建任何操作时,即使未使用此操作,也不会销毁该操作。因此,通过每次迭代,您将创建3个操作。因此,经过5次迭代后,您最终将完成15次操作。所以实际上,这不是如何将相同的卷积内核应用于输入。所以你应该先创建整个图形。那就是:

x = tf.placeholder(tf.float32, shape=[...], name='input_frames')
weights: tf.Variable(tf.truncated_normal([5, 5, 3, 128], stddev=1e-1, dtype=tf.float32, name='weights1'))
output = tf.nn.relu(tf.nn.bias_add(tf.nn.conv2d(output, weights, [1,1,1,1]), bias))

for i in range(5):
    sess.run(output, feed_dict={x: "your_image"})

希望这会有所帮助。