Ошибка Keras: переменная не существует или не была создана с помощью tf.get_variable () - PullRequest
0 голосов
/ 12 марта 2019
import tensorflow.keras as ks
def scope_error_test():
    input_holder = tf.placeholder(dtype=tf.float32,
                                  shape=(None, 368, 368, 3),
                                  name='input')
    with tf.variable_scope("scope_1"):
        with tf.variable_scope("scope_2"):
            conv1 = ks.layers.Conv2D(kernel_size=7,
                                     filters=64,
                                     strides=2,
                                     padding='same',
                                     activation=tf.nn.relu,
                                     name='conv1')(input_holder)
            pool1 = ks.layers.MaxPool2D(pool_size=3, padding='same',
                                        strides=2,
                                        name='pool1')(inputs=conv1)
    print(pool1.get_shape().as_list())
with tf.Session() as sess:
        scope_error_test()
        sess.run(tf.global_variables_initializer())
        print(tf.global_variables())
        with tf.variable_scope('', reuse=True):
            for variable in tf.global_variables():
                var_name = variable.name.split(':')[0]
                var_tf = tf.get_variable(var_name)

В этом примере кода я хочу понять, почему я получаю эту ошибку: ValueError: Переменная scope_1 / scope_2 / conv1 / kernel не существует или не была создана с помощью tf.get_variable (). Вы имели в виду установить reuse = tf.AUTO_REUSE в VarScope?

Примечание: Я использовал tensorflow.contrib.layers вместо tensorflow.keras.layers, и он работал правильно! Может быть ошибка!?

Я пробовал тензор потока 1.9.0 и тензор потока 1.12.0

...