0

私の論文の実験を行い、TFのCNNの例に基づいて、Tensorflowにもう一つの小さなディープニューラルネットワークを作成しました与えられた例とよく似ていますが、Mnistではなく1dにあります)。Tensorflow:random_normalとrandom_uniformデータをウェイト初期化子として使用すると、NNは訓練を受けません

このTFの例は、すべての重み変数をtf.truncated_normalデータで初期化するため、NNにデータを訓練させることです(損失の削減+精度の向上)。しかし、私は科学論文からニューラルネットワークをエミュレートしようとしているので、畳み込みレイヤーの重みを正規分布から取った値で初期化しなければなりませんでした(そして、tf.random_normalをstddevで0.1としました)。完全に接続された層の重みは一様分布(ここではtf.random_uniformを用いた)の値である。損失と正確さがわずかな数字(8%と14%の間の精度と2.51から2.54の間の精度)の間でちょうど変動しているが、減少も増加もしていないと思うので、結果はかなり悪かった。

フレームワークの仕組みがわからないので、私は尋ねました。そして、各反復ごとに、変数(私が初期化子として使用している)がいつも再開されています(それはtf.truncated_normalデータでは起こりえないことです)、そのため、これらの2つのタイプの初期化による私のニューロンは決して学習しません。それが本当であれば、誰かが私はちょうど初期化子として使用されるこれらの値を作ることができるし、反復しない方法を教えてください可能性が

私のコードはここで見つけることができます:https://github.com/dialgop/small_deep_nn/blob/master/Cnn_Model_Martin.ipynb

おかげで助けることができる誰にも多くのことを私は

答えて

1

実際にあなたが観察しているのは、テストコードのドロップアウトの結果です。ドロップアウトはトレーニング段階でのみ使用され、テスト段階ではオフにする必要があります。精度は単にテスト段階でのドロップアウトのランダム性によって引き起こされます。

関連する問題