問題タブ [encog]
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.
java - Java - Encog 3.2 - RPROP ネットワークが重みを更新しない
多くの質問と例を調査しましたが、RPROP NN の何が問題なのかわかりません。また、Encog を使用するのは初めてなので、何か間違っているのではないかと思っています。
画像 (50x50) を供給し、それをグレースケールに変換し、入力 double[][] とターゲット double[][] をネットワークに供給することで、ネットワークを訓練して猫を認識しようとしています。エラーが常に 4.0 であることに気付いたので、トレーニングの反復ごとに dumpWeights() を実行して、何が起こっているかを確認しました。重みが常にゼロであることに気付きました。次に、基本に戻って、正しいことを行っているかどうかを確認したので、XOR 問題用に修正しました。
次の出力が得られます。network.dumpWeights() メソッドの結果として 0.0 の行に注目してください。
エポック #132636 エラー: 2.0 0,0,0,0,0,0,0,0,0 エポック #132637 エラー: 2.0 0,0,0,0,0,0,0,0,0 エポック #132638 エラー: 2.0 0,0,0,0,0,0,0,0,0 エポック #132639 エラー: 2.0 0,0,0,0,0,0,0,0,0 エポック #132640 エラー: 2.0
... 等々。
ここで私が間違っていることがわかりますか?また、XORHelloWorld.java の例が実装されているので、2-3-1 アーキテクチャも試しました。
どんな助けでも大歓迎です。
java - Encog ImageNeuralNetwork エラーが発生しない
私はJavaでImageNeuralNetworkの例を学び、適応させようとしています。これまでのところ、私の問題は、NNに32X32の大量の画像を与えてトレーニングさせると、エラーが14%を下回ることはなく、最初はあちこちにジャンプすることです。
私の画像はBWで、27のクラスに分類されています。つまり、27 個の出力ニューロンがあることがわかっています。
私の質問は、NN が学習しない理由です。異なるニューロン数で異なる隠れ層 (1 または 2 層) を設定しようとしましたが、何も役に立ちません。
誰かが私が間違っていることを教えてもらえますか? 私が言ったように、私はNNから始めたばかりで、ここで少し迷っています
編集:エラーが発生することを知るために入力として与える画像を少なくすると、問題は解決しません。多くの画像を分類したい場合、エラーが発生しないままになります。
java - エルマンネットワークが止まらない
XOR 演算子の Elman ネットワーク トレーニングは停止せず、数百万回の反復に実行されます。どんな助けでも大歓迎です!
java - Encog - 検証セットを使用した EarlyStoppingStrategy
検証セットから計算されたエラーが増加し始めたら、ネットワークのトレーニングを停止したいと思います。トレーニング アルゴリズムとして RPROP を使用した BasicNetwork を使用しており、次のトレーニング イテレーションがあります。
トレーニングを停止する必要があるかどうかを判断する前に重みが既に変更されているため、明らかにこれは機能していません。一歩下がって古いウェイトを使用できる方法はありますか?
EarlyStoppingStrategy
メソッドを使用して使用する必要があると思われるクラスも表示されますaddStrategy()
。EarlyStoppingStrategy
ただし、コンストラクターが検証セットとテスト セットの両方を使用する理由がよくわかりません。ネットワークの出力をテストするまでは、検証セットのみが必要であり、テスト セットはまったく使用されるべきではないと考えました。
artificial-intelligence - Resilient Backpropagation のバグ?
Resilient Propagation を正しく実装するのに苦労しています。ニューラル ネットワークをトレーニングするためにバックプロパゲーション アルゴリズムを既に実装しました。これは XOR-Net で期待どおりに機能します。つまり、エラーを 1% 未満に下げるには約 600 エポックが必要です。今、同じ問題に対して Resilient Propagation ( http://en.wikipedia.org/wiki/Rprop ) を実装しようとしましたが、最初のいくつかのエポックではエラーが 23% まで急速に低下しましたが、その後 50% まで上昇し、そこにとどまりました。http://www.heatonresearch.com/book/introduction-neural-network-math.html
の説明に従って正確に実装しました、しかし、それは不可解です 説明: それは、ウィキペディアの Rprop-Page とは異なり、また、私が知る限り、本と同じ著者によって書かれた encog の実装とも異なります。また、さまざまなソースからさまざまな実装を既に試しましたが、何も機能しませんでした。
さまざまなソース間の違いの一部:
- 重みの変化の計算に、signum(currentPartialDerivative * previousPartialDerivative) の代わりに signum(currentPartialDerivative) を使用する
- 新しい重み変更の新しい更新値の代わりに、最後の重み変更を使用する
- 最初に重みの変化を計算し、次に新しい更新値を計算します
これを実装する正しい方法は何ですか? その後、本によると実装:
通常のバックプロパゲーションの同じメソッドが正常に機能します。
java - Encog 入力レイヤーのサイズ制限
Encog フレームワークと Java を使用して、画像認識システムを実行しています。それでも、Downsample の幅と高さを 100 より大きく設定すると、
ネットワークを作成しようとしているとき。
入力層のニューロン数に制限はありますか?
encog - ROC の Encog バイナリ分類スコア
Encog(Java経由)を使用してバイナリ分類器に取り組んでいます。SVM またはニューラル ネットワークを使用してセットアップしました。ROC 曲線の下の領域を (部分的に) 使用して、さまざまなモデルの品質を評価したいと考えています。
より具体的には、理想的には、モデルの出力を、ROC でのランク付けに使用できるある種の予測信頼スコアに変換したいと考えていますが、ドキュメントにはまだ何も見つかりません。
コードでは、次のようなモデルの結果を取得します。
分類の数値的信頼性を得るにはどうすればよいですか?
multithreading - Encog の助けが必要な時系列予測のための HyperNEAT ネットワーク
HyperNEAT ネットワークを使用した時系列予測に Encog AI フレームワークを使用しています。
ネットワークを作成するために使用する簡単なコードを次に示します。
ここで、columns は機能の数で、windowSize は将来の値を予測するために必要な過去の日数です (私の例では windowSize は 1 です)。
私はこの例外を受け取ります:
Exception in thread "pool-2-thread-416" java.lang.ArrayIndexOutOfBoundsException
at org.encog.util.EngineArray.arrayCopy(EngineArray.java:107)
at org.encog.neural.neat.NEATNetwork.compute(NEATNetwork.java:194)
at org.encog.util.error.CalculateRegressionError.calculateError(CalculateRegressionError.java:46)
at org.encog.neural.networks.training.TrainingSetScore.calculateScore(TrainingSetScore.java:61)
at org.encog.ml.ea.score.parallel.ParallelScoreTask.run(ParallelScoreTask.java:83)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
スレッドの処理に問題があるようです。誰かがこの問題を解決するのを手伝ってくれますか? 2 番目の質問は、Encog でバックプロパゲーションを使用して NEAT ネットワークをトレーニングするにはどうすればよいですか?