2017-02-11 10 views
1

私は必要に応じて、私はネットワークにそれを養うことができplaceholderなどを持っているでしょう:トレーニング後に別のDropout p値を入力するにはどうすればよいですか? Tensorflowで

self.dropout_keep_prob = tf.placeholder(tf.float32, name="dropout_keep_prob") 

# ... 

# Add dropout 
with tf.name_scope("dropout"): 
    self.h_drop = tf.nn.dropout(self.h_pool_flat, self.dropout_keep_prob) 

はしかし、私はKerasでこれを行う方法がわからないです:kerasで

# in_dropout = tf.placeholder(tf.float32, name="dropout_keep_prob") 
in_dropout = Input(shape=(1,), name='dropout') 

# .. 

# Add droppout 
droput = Dropout(in_dropout)(max_pool) # This does not work of course 

答えて

1

Dropoutレイヤは、トレーニングフェーズとテストフェーズで異なる動作をします。つまり、トレーニングフェーズでのみ有効になります。

スルートレーニング/テストフェーズでドロップアウトを使用するには、ドロップアウトレイヤーをLambdaレイヤーに置き換える必要があります。dropoutケラスバックエンドの機能を使用します。

from keras.layers.core import Lambda 
from keras import backend as K 

model.add(Lambda(lambda x: K.dropout(x, level=0.5))) 

詳細については、hereを参照してください。

+0

恐縮です、ありがとうございます。それはどうにかして私はそれが実際にテスト中に使用されていないことを取得していないドキュメントには何とかしています。 – displayname

+0

あなたは大歓迎です.. – indraforyou

関連する問題