tf.nn.dropout
Tf Nn Dropout
Tf.nn.dropout関数
まず、公式の関数定義を見てください。
def dropout(x, keep_prob, noise_shape=None, seed=None, name=None)
入力は次のとおりです。
- x、独自のトレーニング、テストデータなど。
- Keep_prob、ドロップアウト確率
- ...、他のパラメータは使用されません、導入されません
出力は次のとおりです。
- xと同じ形状のテンソル
次に、公式APIがこの関数について何を言っているか見てみましょう。
確率keep_probを使用すると、1 / keep_probでスケールアップされた入力要素を出力し、それ以外の場合は0を出力します。スケーリングは、期待される合計が変更されないようにします。
出力のゼロ以外の要素は、元の「1 / keep_prob」回であることに注意してください。そうは言っても、以下のプログラム例を挙げてください。
import tensorflow as tf dropout = tf.placeholder(tf.float32) x = tf.Variable(tf.ones([10, 10])) y = tf.nn.dropout(x, dropout) init = tf.initialize_all_variables() sess = tf.Session() sess.run(init) print sess.run(y, feed_dict = {dropout: 0.4})
操作の結果は次のとおりです。
[[ 0. 0. 2.5 2.5 0. 0. 2.5 2.5 2.5 2.5] [ 0. 2.5 2.5 2.5 2.5 2.5 0. 2.5 0. 2.5] [ 2.5 0. 0. 2.5 0. 0. 2.5 0. 2.5 0. ] [ 0. 2.5 2.5 2.5 2.5 0. 0. 2.5 0. 2.5] [ 0. 0. 0. 0. 0. 0. 0. 0. 2.5 2.5] [ 2.5 2.5 2.5 0. 2.5 0. 0. 2.5 2.5 2.5] [ 0. 2.5 2.5 2.5 0. 2.5 2.5 0. 0. 0. ] [ 0. 2.5 0. 2.5 0. 0. 2.5 2.5 0. 0. ] [ 2.5 2.5 2.5 2.5 2.5 0. 0. 2.5 0. 0. ] [ 2.5 0. 0. 0. 0. 0. 2.5 2.5 0. 2.5]]
操作の結果を分析します。
- 入力テンソルと出力テンソルの形状はまったく同じです
- 0でない要素は、元の「1 / keep_prob」時間になります
特性の分析が完了した後、簡単な要約、ドロップアウトの概念はとても良いように見えますが、プログラムでの実装はとても簡単です!率直に言って、テンソルフローのドロップアウトは次のとおりです。 入力テンソルの一部の要素を0にし、0に変更されていない他の要素を元の1 / keep_probサイズにします。 !