Ich versuche, 2 Conv Ebenen die gleichen Gewichte zu teilen, jedoch scheint es, dass die API nicht funktioniert.TensorFlow Wiederverwendungsvariable mit 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)
Es die Blätter aus tf.contrib.layers.conv2d
zu tf.layers.conv2d
foo/foo/Relu:0
foo/foo_1/Relu:0
Ändern out das Problem nicht lösen.
Es hat das gleiche Problem mit 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)
gibt
conv/BiasAdd:0
conv_2/BiasAdd:0
für das erste Beispiel, warum ist die Wiederverwendung auch bei der ersten Conv wahr? – Steven
@Steven Ich habe alle Kombinationen versucht, um Wiederverwendung = True, aber keiner von ihnen, um wirksam zu sein. Könnten Sie uns helfen, ein kurzes Beispiel dafür zu geben, wie die Gewichte mithilfe von tf.layers.conv2d geteilt werden? – Xingdong
Normalerweise mache ich es von Hand, d. H. Erzeuge die Gewichte und gebe sie dann weiter. Dann habe ich die Gewichtsvariable, die ich wiederverwenden kann, indem ich einfach die gleiche Variable verwende. Ich kann ein Beispiel dafür zeigen? – Steven