我想讓2個conv層共享相同的權重,但是,它似乎API不起作用。TensorFlow重用變量與tf.layers.conv2d
import tensorflow as tf
x = tf.random_normal(shape=[10, 32, 32, 3])
with tf.variable_scope('foo') as scope:
conv1 = tf.contrib.layers.conv2d(x, 3, [2, 2], padding='SAME', reuse=True, scope=scope)
print(conv1.name)
conv2 = tf.contrib.layers.conv2d(x, 3, [2, 2], padding='SAME', reuse=True, scope=scope)
print(conv2.name)
它打印出
foo/foo/Relu:0
foo/foo_1/Relu:0
改變從tf.contrib.layers.conv2d
到tf.layers.conv2d
沒有解決不了的問題。
它與tf.layers.conv2d
同樣的問題:
import tensorflow as tf
x = tf.random_normal(shape=[10, 32, 32, 3])
conv1 = tf.layers.conv2d(x, 3, [2, 2], padding='SAME', reuse=None, name='conv')
print(conv1.name)
conv2 = tf.layers.conv2d(x, 3, [2, 2], padding='SAME', reuse=True, name='conv')
print(conv2.name)
給
conv/BiasAdd:0
conv_2/BiasAdd:0
第一個例子爲什麼即使在第一個conv上重用也是如此? – Steven
@Steven我已經嘗試過所有的組合,以重用=真,但沒有一個是有效的。你能幫忙舉一個簡單的例子來說明如何通過使用tf.layers.conv2d來使權重共享嗎? – Xingdong
我通常通過手工完成,即創建權重,然後將其傳入。然後,我可以通過簡單地使用相同變量重新使用權重變量。我可以舉一個例子嗎? – Steven