2016-11-13 2 views
0

tensorflowの例cifar10では、reuse = Trueの推論をグラフに追加した後に損失値が変化します。もともとreuse = Trueで追加の推論を追加した後にlossが変化する理由

2016-11-13 06:08:04.936044: step 0, loss = 4.68 (6.5 examples/sec; 
19.787 sec/batch) 

私の変更後は:

2016-11-13 06:00:50.400917: step 0, loss = 7.05 (6.4 examples/sec; 20.109 sec/batch) 

私はなぜ理解していません。 cifar10_train.py Iにおいて行われたすべての変更は、次のように

1である)が、Iはcifar10.pyで)、

logits = cifar10.inference(images, reuse = False) 
logits2 = cifar10.inference(images, reuse=True) 

2行を追加し、私はinference()

def inference(images, reuse): 
    with tf.variable_scope('conv1', reuse) as scope: 
...... 

に再利用を添加し私が見つかりました。損失額は全く異なっています。もともと

:私の変更後

2016-11-13 06:08:04.936044: step 0, loss = 4.68 (6.5 examples/sec; 19.787 sec/batch) 

2016-11-13 06:00:50.400917: step 0, loss = 7.05 (6.4 examples/sec; 20.109 sec/batch) 

これはなぜですか?

+0

コードを複数回実行しようとしましたか?これは毎回起こりますか?深い学習における訓練アルゴリズムの多くは確率的である。 – sygi

+0

tensorflow r0.11を使用していますか?その行だけを本当に変更した場合は、[tf.variable_scope](https://www.tensorflow.org/versions/r0.11/api_docs/python/state_ops)の2番目のパラメータとして、変更する必要はありません。 html#variable_scope)は 'default_name'です(' tf.variable_scope( 'conv1'、reuse = reuse) ')。 – sygi

+1

問題はいつでも再現できます。 – anna

答えて

0

パラメータ再利用はTrueですlogitsを意味し、再利用がFalseの場合、その出力を取得するには、同じモデルを使用しlogits2、logitsと私が言ったことを理解するために詳細については、別のモデル から来logits2、あなたはこれを見ることができます。https://www.tensorflow.org/programmers_guide/variable_scope

関連する問題