2017-08-08 3 views
0

私はいくつかのバッチの画像から特徴を抽出するのにtf-slimを使用しています。Tf-Slim:ValueError:変数vgg_19/conv1/conv1_1/weightsは既に存在し、許可されていません。 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'] 

あなたは各バッチで、見ることができるように、私はのバッチを選択します。問題は、私はtitle.Myコードのエラーは、このようなものになってしまうことの後に、私のコードは、最初のバッチのために働くですvgg-19モデルを使用してpool5レイヤーからフィーチャーを抽出します。しかし、最初の反復の後、私はエンドポイントを取得しようとしているラインでエラーになります。 1つの解決策は、私がインターネット上で見つけたように、毎回グラフをリセットすることですが、私はこれらの抽出された機能を使用して訓練するコードの後半部分で私のグラフにいくつかの重みを持っているので、私はそれらをリセットしたくない。どんなリードも高く評価されています。ありがとう!

答えて

1

のグラフをに1回だけ作成してください。エラーメッセージは、同じグラフを2回構築しようとしていることを正確に示しています。

だから、(擬似コードで)でなければなりません

create_graph() 
load_checkpoint() 

for each batch: 
    process_data() 
+0

したがって、基本的に私vgg.vgg_19オブジェクトへの入力としてプレースホルダを使用して、右の実行時にプレースホルダに画像を渡しますか? –

+0

はい。それはtfでデータを渡す方法です。 – lejlot

関連する問題