セットアップ
イメージのTensorflowで自動エンコーダーを構築します。私の画像は長さと幅が約30ピクセルです。線形関数と256個のニューロンとTensorflow autoencoder:代表的な出力を得るには?
- 入力層
- エンコーダー層:私は5層を使用しています。 (この層は前処理PCAとして機能すると考えられている)
- シグモイド関数を持つ128個のニューロンを持つエンコーダ層。
- シグモイド関数を持つ256個のニューロンを持つデコーダ層。
- 線形関数の入力と同じ数のニューロンを持つデコーダ/出力層。
すべての層の使用バイアスとは、この
layer_1 = tf.nn.sigmoid(tf.add(
tf.matmul(x, tf.Variable(tf.random_normal([n_input, n_hidden_1]))),
tf.Variable(tf.random_normal([n_hidden_1]))
))
のように定義されている私のコストが
cost = tf.reduce_mean(tf.div(tf.reduce_sum(tf.pow(y_true - y_pred, 2)), 2))
によって定義され、私は0.01
のスタート学習率とRMSPropOptimizer
を使用しました。
私は約2,50000の画像でオートエンコーダーを訓練しました。以下では、私が訓練しなかったテストデータの結果を示します。上段は常に入力画像を示し、下段は常に出力画像を示す。
私はMNISTデータに満足オートエンコーダ(アレイ・セルは、0-1からの値です)使用:私は(アレイ・セルは、0〜100の値であり、私は自分自身を撮影した写真に満足オートエンコーダを使用
二乗誤差
rmse = tf.sqrt(tf.reduce_mean(tf.square(tf.sub(y_true, y_pred)), axis=1))
がある - 最初の3枚の写真の方が高い(darke NEDは、白化、そのまま写真用クロスで)、そして下に置く:
17.5, 29.6, 12.9, 11.7, 11.2, 11.7, 7.3, 7.1, 7.1, 8.1
をしかし、オートエンコーダは、(アレイ・セルは0-1からのもの)テクスチャ画像には十分に動作しません。最初に私はRMSPropOptimizer
を使用し、トレーニング中に私のコストはかなり高いので
を持って、私はhttps://stackoverflow.com/a/40956761/4533188からの助言に従い、AdamOptimizer
を使用変化しませんでした。コストが低くなっていますが確かに私は
とのより良い結果を得た、彼らはエポック中に静止一定である:
また、出力画像はかなり暗いです。私はrmse
sが真ん中のドットによる最初のイメージのために高いことを期待していることに注意してください
0.4642, 0.2669, 0.4976, 0.4378, 0.4753, 0.4688, 0.4615, 0.4571, 0.4691, 0.4487
:私は、私が期待するよう、これがまた私のrmse
sは理由がないかもしれないと考えています第2の画像は暗くなっているからである。私は、rmse
が望んでいない理由は、出力画像が暗すぎるからだと思います。
質問
- はなぜコストがエポックの上に減少していないと私はこれが軌道に乗るために何ができるのでしょうか?
- なぜ出力画像が暗くなり、入力画像をより表現しやすくするために私は何ができますか?
rmse
を私の期待通りにするにはどうすればよいですか?
1.出力を線形にし、最初の隠れたレイヤーを線形にしたい場合、レイヤーに対する推奨は何ですか? 3. Sigmoid、linear、ReLUには何をお勧めしますか? 4.どういう意味ですか?それらをSOに共有しますか? – Make42
2.シグモイドの代わりにReLUを使用するのはなぜですか? – Make42
ReLUはシグモイドよりもトレーニングが容易であることが証明されています。私は神経ネットワークの開発に成功するために、この非常に良いリソースを勉強することをお勧めします。 deeplearningbook.org – fabrizioM