[Tensorflow] 学習時のみdropoutする

 学習時はDropoutし、推論時はDropoutしないようにする実装について書きます。

モデル記述


 boolean値のplaceholderを使って学習・推論時にDropout率を分岐して調整します。

.....

is_train = tf.placeholder(dtype=tf.bool)
# 1つ目のlambdaはDropoutで残すニューロンの割合、
# 2つ目は推論時にDropoutさせなくするため100%にしている
keep_prob = tf.cond(is_train, lambda: 0.6, lambda: 1.0) 
dense = tf.layers.dense(x, units=output_num, activation=tf.nn.relu) 
dropout = tf.nn.dropout(dense, keep_prob)

.....

推論・学習


 boolean値のplaceholderであるis_trainに実際のboolean値を渡します。

.....

predict_result = self._session.run(train_step, 
         feed_dict={is_train: False, x: data})

.....

コメントを残す

メールアドレスが公開されることはありません。