問題タブ [sigmoid]
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 - Pythonでパラメータ化されたシグモイド関数のエラーに対処する
一連の数値をシグモイドに変換しようとしています:
それぞれの辞書の各リストの各数値は、cost_matrix
異なるシグモイド関数によって正規化されます。
ただし、これを実行すると、次のようになります。
配列は次のようになります。
すべてのコストは常に 0 より大きいことに注意してください。したがって、シグモイド関数で 2 を掛けて 1 を引きます。
このエラーが発生しないようにするにはどうすればよいですか?
python - Tanh活性化関数の代わりにシグモイドを使用すると失敗する - ニューラルネットワーク
sigmoid
とtanh
アクティベーション機能の両方を使用するオプションを提供します。
XOR テストは、tanh
関数 yield で問題なく動作するようです ~(0,1,1,0)
しかし、に変更するsigmoid
と、間違った出力が得られます〜(0.5,0.5,0.5,0.5)
オンラインで見つけた別のコードでこれを試してみましたが、まったく同じ問題が発生します。
唯一の変更点は、活性化関数 (およびその導関数) のようです。これを変更するには、バックプロパゲーションなど、他の変更が必要ですか?
助けてくれてありがとう!
java - アクティベーション関数はどのくらい正確である必要があり、その入力はどれくらい大きくなりますか?
私は Java で基本的なニューラル ネットワークを作成しており、活性化関数を作成しています (現在、シグモイド関数を作成しています)。トレーニングに実際に妥当な時間がかかることを期待して、double
( に並べて) sを使用しようとしています。BigDecimal
ただし、関数がより大きな入力では機能しないことに気付きました。現在、私の機能は次のとおりです。
この関数は when までかなり正確な値を返しますが、関数が を返すt = -100
ときです。入力が正規化されている場合の典型的なニューラルネットワークでは、これで問題ありませんか? ニューロンは、入力の合計が ~37 を超えることはありますか? 活性化関数に与えられる入力の合計のサイズが NN ごとに異なる場合、それに影響を与える要因にはどのようなものがありますか? また、この機能をより正確にする方法はありますか? より正確かつ/またはより高速な代替手段はありますか?t >= 37
1.0
python - アイリスデータセットのニューラルネットワーク
背景: 私は Python で、有名なアヤメのデータ セットから 3 つのクラスのアヤメを識別するように特別に設計された、ミニバッチの確率的勾配降下法を使用する 3 層ニューラル ネットワークを作成しています。入力層には、データ内の各特徴に 1 つずつ、計 4 つのニューロンがあります。隠れ層には 3 つのニューロンがあり (ただし、コードでは隠れ層のニューロン数のバリエーションが許可されています)、出力層には 3 つのニューロン (種ごとに 1 つ) があります。すべてのニューロンはシグモイド活性化関数を使用します。
問題: 損失 (平均二乗誤差) は通常、時間の経過とともに減少しますが、精度 (通常は 55.55% または 33.33% 未満) は停滞しています。さまざまなエポック反復数と学習率を試してみましたが、何も機能しませんでした。興味深いことに、多くの場合、アルゴリズムの出力は入力値に関係なく固定されたままです。エポックの数が増えるにつれて損失が減少しているように見えるので、私は自分の数学にかなり確信を持っています。
問題を再現するには: Python コードを実行し、LEARNING_RESULTS.txt ファイルを確認します。(リポジトリ内の iris.txt ファイルが同じディレクトリにあることを確認してください)
質問: このニューラル ネットワークのパフォーマンスを改善するにはどうすればよいですか?
GitHub リポジトリへのリンク: https://github.com/kwonkyo/neural-networks
ありがとう!
更新: 問題は解決しました。ミニバッチ勾配行列の合計ではなく、定数値 (ミニバッチ行列の合計の数値合計) を重み行列とバイアス行列に追加していました。更新されたコードは github にプッシュされました。
python - シグモイドは常に 1 を返しますか?
次の点を考慮してください。
私の理解では、シグモイドの結果の範囲は 0 から 1 です。この投稿 ( http://clear-lines.com/blog/post/Logistic-Regression.aspx ) によると:
「正の値は 0.5 より大きい値を返し、入力値が大きいほど 1 に近づきます。この関数は確率を返すと考えることができます。x の値が非常に高いか低い場合、高い確実性があります。 2 つのグループのいずれかに属し、ゼロに近い値の場合、各グループの確率は 50% / 50% です。」
しかし、シグモイドが Sigmoid(0) の場合、シグモイドは 0.5 (つまり、ゼロ分類) しか生成しないようです。inX または weights がゼロ (またはゼロ ベクトル) でない限り、classifyVector は常に 1 を返しませんか?
たとえば、次のデータを考えてみましょう。
ここで、inX がゼロになることはありません。計算すると、重みもゼロにはなりません。では、シグモイドはどのようにして公正な分析を提供できるのでしょうか?
machine-learning - ニューラル ネットワークを使用した線形システムの sigmoid() または tanh() 活性化関数
連続出力変数に関する 1 つの問題を調査するために、ニューラル ネットワークを構築しようとしています。使用したニューラル ネットワークの概略図を以下に示します。
ニューラル ネットワークの概略図: 入力層サイズ = 1; 隠れ層のサイズ = 8; 出力レイヤー サイズ = 1。
この場合、sigmoid() アクティベーション関数の代わりに tanh() アクティベーション関数を使用する必要がある理由はありますか? 以前、ニューラル ネットワークを使用してロジスティック回帰問題を解決するために sigmoid() アクティベーション関数を使用していましたが、連続出力変数がある場合に tanh() 関数を使用する必要があるかどうかは明確ではありません。
連続出力変数の値に依存しますか? 例: (i) 出力変数が 0 から 1 に正規化される場合は sigmoid() を使用します。 (ii) 出力変数が負の値を持つ場合は tanh() を使用します。
前もって感謝します
neural-network - System Verilog で float 値の e^x を計算しますか?
FPGA 上で動作するニューラル ネットワークを構築しています。パズルの最後のピースは、シグモイド関数をハードウェアで実行することです。これは次のいずれかです。
また
残念ながら、ここの x は float 値 ( real
SystemVerilog の値) です。
SystemVerilog でこれらの関数のいずれかを実装する方法に関するヒントはありますか?
これらの関数はどちらも複雑であり、浮動小数点値であるという複雑さが増すため、どこから実装を開始すればよいかさえわからないため、これは本当に混乱します。