0

セットアップ

イメージのTensorflowで自動エンコーダーを構築します。私の画像は長さと幅が約30ピクセルです。線形関数と256個のニューロンとTensorflow autoencoder:代表的な出力を得るには?

  1. 入力層
  2. エンコーダー層:私は5層を使用しています。 (この層は前処理PCAとして機能すると考えられている)
  3. シグモイド関数を持つ128個のニューロンを持つエンコーダ層。
  4. シグモイド関数を持つ256個のニューロンを持つデコーダ層。
  5. 線形関数の入力と同じ数のニューロンを持つデコーダ/出力層。

すべての層の使用バイアスとは、この

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の値であり、私は自分自身を撮影した写真に満足オートエンコーダを使用 enter image description here

を):予想されるように ルートが意味enter image description here

二乗誤差

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を使用し、トレーニング中に私のコストはかなり高いので

enter image description here

を持って、私はhttps://stackoverflow.com/a/40956761/4533188からの助言に従い、AdamOptimizerを使用変化しませんでした。コストが低くなっていますが確かに私は

enter image description here

とのより良い結果を得た、彼らはエポック中に静止一定である:

enter image description here

また、出力画像はかなり暗いです。私は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が望んでいない理由は、出力画像が暗すぎるからだと思います。

質問

  1. はなぜコストがエポックの上に減少していないと私はこれが軌道に乗るために何ができるのでしょうか?
  2. なぜ出力画像が暗くなり、入力画像をより表現しやすくするために私は何ができますか?
  3. rmseを私の期待通りにするにはどうすればよいですか?

答えて

0

あなたのネットワークが明らかにあなたのAutoenconder層がReLU

  • は(特定のディストリビューションが依存するより良い初期化技術を使用して使用し、シグモイドを使用しないでください
  • 対称ではありません

    • を訓練されていません活性化機能)
    • エンコーダ層とデコーダ層の重量を共有する
  • +0

    1.出力を線形にし、最初の隠れたレイヤーを線形にしたい場合、レイヤーに対する推奨は何ですか? 3. Sigmoid、linear、ReLUには何をお勧めしますか? 4.どういう意味ですか?それらをSOに共有しますか? – Make42

    +0

    2.シグモイドの代わりにReLUを使用するのはなぜですか? – Make42

    +0

    ReLUはシグモイドよりもトレーニングが容易であることが証明されています。私は神経ネットワークの開発に成功するために、この非常に良いリソースを勉強することをお勧めします。 deeplearningbook.org – fabrizioM

    関連する問題