Próbuję utworzyć dwie warstwy konwergencji o tych samych masach, ale wydaje się, że interfejs API nie działa.Zmienna ponownego użycia TensorFlow z 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)
To wypisuje
foo/foo/Relu:0
foo/foo_1/Relu:0
Zmiana z tf.contrib.layers.conv2d
do tf.layers.conv2d
nie rozwiązuje problemu.
Ma ten sam problem z 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)
daje
conv/BiasAdd:0
conv_2/BiasAdd:0
dla pierwszego przykładu, dlaczego ponowne użycie jest prawdziwe, nawet w pierwszym konweniu? – Steven
@Steven Wypróbowałem wszystkie kombinacje, aby ponownie użyć = Prawda, ale żadna z nich nie była skuteczna. Czy możesz podać krótki przykład na to, jak sprawić, aby wagi mogły być udostępniane za pomocą tf.layers.conv2d? – Xingdong
Zwykle robię to ręcznie, tj. Tworzę ciężary, a następnie przekazuję je. Wtedy mam zmienną wagową, którą mogę ponownie wykorzystać, po prostu używając tej samej zmiennej. Mogę pokazać przykład tego? – Steven