2017-08-08 66 views
0

我正在使用tf-slim從幾批圖像中提取特徵。問題是我的代碼工作爲第一批,在那之後,我得到的title.My代碼中的錯誤是這樣的:Tf-slim:ValueError:變量vgg_19/conv1/conv1_1 /權重已存在,不允許。你是否想在VarScope中設置reuse = True?

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圖層中提取特徵。但是在第一次迭代之後,我在我嘗試獲取端點的行中出現錯誤。我在互聯網上找到的一種解決方案是每次都重置圖形,但我不想這樣做,因爲在我使用這些提取的特徵進行訓練的代碼的後面部分中,我的圖形中有一些權重。我不想重置它們。任何導致高度讚賞。謝謝!

回答

1

您應該創建圖一次,不在循環中。錯誤消息告訴你確切的 - 你試圖建立兩次相同的圖。

所以應該(在僞代碼)

create_graph() 
load_checkpoint() 

for each batch: 
    process_data() 
+0

所以基本上使用佔位符輸入到我的vgg.vgg_19對象,並在運行時正確傳遞圖像佔位符? –

+0

是的。這就是你在tf中傳遞數據的方式。 – lejlot

相關問題