0

私はtfでpythonを使用しており、mnistデータ用の自動ノイズ除去エンコーダのトレーニング中に入力の一部をマスクする適切な方法を探しています。入力層にドロップアウトを使用したpythonテンソルフロー

私は入力層にドロップアウトを使用しましたが、隠れた層に使用しているのと同じ方法で、結果はあまり良くありません。なぜなら、自動エンコーダの問題は何かを知るのは難しいです。すべての深い学習アーキテクチャ

私は入力層を含め、ドロップアウトのために使用されるコード:

def encoder_2(x): 
    global dims #list of dimensions including the input 
    layers = [x] 
    dropouts = [] 
    for i,dim in list(enumerate(dims))[:-1]: 
     dropouts.append(tf.nn.dropout(layers[-1], keep_prob=keep_prob)) 
     try: 
      layers.append(tf.nn.relu(tf.add(tf.matmul(dropouts[-1], weights["encoder_h%d"%(i+1)]), biases["encoder_b%d"%(i+1)]))) 
     except: 
      pass 

    return layers[-1] 

私は入力マスキング用hereいくつかの実装を見つけましたが、私はそれは難しい何があることを信じていないことを見つけますそのためにtfに組み込まれた関数。

入力をマスクする正しい方法はドロップアウトですか?そうでない場合は、入力にマスキング(ドロップアウト)を使用する方法が組み込まれていますか?

ありがとうございました

答えて

1

通常、入力レイヤーの保持確率は異なります。まず、すべての入力をに保ち、同様の結果がドロップアウトにならないかどうかを確認してください。 keep_prob=0.0を試してみると、ノイズ(入力なし)しか得られません。これは、この種のシステムをデバッグする方法です。限界が働いていることが確かであれば、普通はmnistに好都合な、keep_prob=0.8のようなものを試してみてください。

+0

ありがとうございます!精度が97%を超える優れた動作のmnist自動エンコーダの例をお勧めしますか? – thebeancounter

関連する問題