Tf-slim: ValueError: переменная vgg_19/conv1/conv1_1/weights уже существует, запрещена. Вы хотели установить reuse=True в VarScope?

Я использую tf-slim для извлечения функций из нескольких пакетов изображений. Проблема в том, что мой код работает для первой партии, после чего я получаю ошибку в заголовке. Мой код выглядит примерно так:

for i in range(0, num_batches):
    #Obtain the starting and ending images number for each batch
    batch_start = i*training_batch_size
    batch_end = min((i+1)*training_batch_size, read_images_number)
    #obtain the images from the batch
    images = preprocessed_images[batch_start: batch_end]
    with slim.arg_scope(vgg.vgg_arg_scope()) as sc:
        _, end_points = vgg.vgg_19(tf.to_float(images), num_classes=1000, is_training=False)
        init_fn = slim.assign_from_checkpoint_fn(os.path.join(checkpoints_dir,  'vgg_19.ckpt'),slim.get_model_variables('vgg_19'))
        feature_conv_2_2 = end_points['vgg_19/pool5']

Как видите, в каждом пакете я выбираю пакет изображений и использую модель vgg-19 для извлечения признаков из слоя pool5. Но после первой итерации я получаю ошибку в строке, где я пытаюсь получить конечные точки. Одно решение, которое я нашел в Интернете, состоит в том, чтобы сбрасывать график каждый раз, но я не хочу этого делать, потому что у меня есть некоторые веса в моем графике в более поздней части кода, который я обучаю, используя эти извлеченные функции. Я не хочу их сбрасывать. Любые выводы высоко ценятся. Спасибо!


person HIMANSHU RAI    schedule 08.08.2017    source источник


Ответы (1)


График следует создавать один раз, а не в цикле. Сообщение об ошибке говорит именно об этом — вы пытаетесь построить один и тот же график дважды.

Так и должно быть (в псевдокоде)

create_graph()
load_checkpoint()

for each batch:
  process_data()
person lejlot    schedule 08.08.2017
comment
Таким образом, в основном используйте заполнитель в качестве входных данных для моего объекта vgg.vgg_19 и передайте изображения заполнителю во время выполнения, верно? - person HIMANSHU RAI; 09.08.2017