畳み込みオートエンコーダーを理解するために TensorFlow で遊んでいます。これを行う単純な単層オートエンコーダーを実装しました。
入力 (次元: 95x95x1) ---> エンコード (32 個の 5x5 フィルターによる畳み込み) ---> 潜在表現 (次元: 95x95x1x32) ---> デコード (結合された重みを使用) ---> 再構築された入力 (次元: 95x95x1)
入力は白黒のエッジ画像、つまり RGB 画像のエッジ検出の結果です。
フィルターをランダムに初期化し、モデルをトレーニングして損失を最小限に抑えました。ここで、損失は、入力と再構成された入力の平均二乗誤差として定義されます。
loss = 0.5*(tf.reduce_mean(tf.square(tf.sub(x,x_reconstructed))))
1000 ステップでトレーニングした後、私の損失は収束し、ネットワークは画像を適切に再構築できます。ただし、学習したフィルターを視覚化すると、ランダムに初期化されたフィルターとあまり変わらないように見えます。ただし、フィルターの値はトレーニング ステップごとに変化します。
少なくとも水平方向と垂直方向のエッジ フィルターを期待していました。または、ネットワークが「ID フィルター」を学習していた場合、フィルターはすべて白か何かであると予想していたでしょうか?
誰かこれについて何か考えがありますか?または、何が起こっているかを分析するために何ができるかについて何か提案はありますか? デコードする前にプーリング層とデプーリング層を含める必要がありますか?
ありがとうございました!
P / S:RGB画像で同じモデルを試してみましたが、フィルターはランダムに見えます(ランダムな色のしみのように)。