問題タブ [loss-function]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 回帰ネットワークのトレーニング時の NaN 損失
260,000 行 35 列の「ワンホット エンコーディング」(すべて 1 と 0) のデータ マトリックスがあります。Keras を使用して単純なニューラル ネットワークをトレーニングし、連続変数を予測しています。ネットワークを作成するコードは次のとおりです。
ただし、トレーニング プロセス中は損失が適切に減少することがわかりますが、2 番目のエポックの途中で nan になります。
RMSProp
の代わりにを使用してみました 、の代わりにSGD
試しました 、ドロップアウトの有無にかかわらず試しましたが、すべて無駄でした。私は小さなモデル、つまり隠れ層が 1 つしかないモデルで試してみましたが、同じ問題が発生しました (別の時点で nan になります)。ただし、少ない機能、つまり 5 列しかない場合でも機能し、非常に優れた予測が得られます。なんらかのオーバーフローがあるように見えますが、その理由は想像できません。損失は不当に大きくはありません。 tanh
relu
Python バージョン 2.7.11、Linux マシンで実行、CPU のみ。Theano の最新バージョンでテストしましたが、Nans も取得したので、Theano 0.8.2 に行ってみましたが、同じ問題が発生しました。最新バージョンの Keras には同じ問題があり、バージョン 0.3.2 でも同様です。
tensorflow - TensorFlow の収束は高い値にとどまっています
私は TensorFlow で遊んでいて、次のチュートリアルを見ていました。
https://github.com/aymericdamien/TensorFlow-Examples/tree/0.11/examples/3_NeuralNetworks
MNINST データベースを作成したくなかったので、8000 のトレーニング サンプルで作成したデータを使用してスクリプトを変更しました。評価は、300 のテスト サンプルで行われます。出力はバイナリ分類です。私は機械学習に飛び込んだばかりで、今のところ私の知識はかなり限られていることに注意してください.
スクリプトは正常に動作しますが、コストが非常に高い値にとどまり、0 に収束しません。まず、これは正常ですか? どうすればこれを改善できますか? 私は何か間違ったことをしましたか?第二に、精度もあまり良くありません。収束が悪いためですか? モデルをトレーニングするには 8000 では足りないのではないでしょうか? または、値が分散しすぎて、実際により良い精度を得ることができません。
ここで同様の問題を見つけました:
回帰用の tensorflow ディープ ニューラル ネットワークは、常に 1 つのバッチで同じ結果を予測します
しかし、この問題が私に当てはまる理由や方法がわかりません。
誰か助けてくれませんか?
出力は次のとおりです。
そして最後に私は得る:
コードは次のとおりです。