問題タブ [lstm]

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.

0 投票する
0 に答える
834 参照

java - 株式市場から LSTM

LSTM ニューラル ネットワークを使用して株式市場を予測するコードを完成させました。ニューラル ネットワークからのデータの送受信に問題があります。私はミニバッチを持っています。各ミニバッチには、入力価格と出力理想の 2 つの配列があります。入力価格の下では、「n」ティックがあることを意味し、出力理想の下では、シフト=-100 の長い期間を持つ確率的インジケーターを意味します。つまり、NN は「確率論的」ニューラル ネットワークになります。

さて、1000 ティック データの履歴があります。構成: ミニバッチ = 1、入力 = 1 (上記では「n」ティックと呼びました)、出力 = 1。

[0; からニューラル ネットワークをトレーニングするとすぐに、1000) ティックはニューラル ネットワーク [0, 900) でのみ提供されます。これは、インジケーター データがオーバーしたためです。最後のティックの予測を取得するには? 間隔 [900, 1000) を無視して、すぐに最後の (1000 番目) ティックを適用しますか??

ミニバッチの配列は、次の形式で計算します。

for(i=0, i<minibatch_size, i=i+1) input[i] = if (i>0) tick[i]-tick[i-1]; else 0; ideal[0] = indicator[batch_size-1];

NN は入力層と出力層の tanh を使用しました。

入力を 100 まで、または出力を 100 まで増やす必要がありますか?? これを回避する方法は?

imgur.comで画像を見る

0 投票する
1 に答える
5243 参照

python - LSTM ネットワーク テンソルフローへの入力

長さ t (x0, ...,xt) の時系列があります。それぞれの xi は d 次元ベクトル、つまり xi=(x0i, x1i, ...., xdi) です。したがって、私の入力 X の形状は [batch_size, d] です

tensorflow LSTM の入力は、サイズ [batchSize, hidden_​​size] である必要があります。私の質問は、時系列を LSTM に入力する方法です。私が考えた解決策の 1 つは、サイズ [d,hidden_​​size] の追加の重み行列 W を持ち、X*W + B で LSTM を入力することです。

これは正しいですか、それともネットワークに何か他のものを入力する必要がありますか?

ありがとう

0 投票する
4 に答える
38235 参照

deep-learning - Keras で深い双方向 LSTM を実装するには?

LSTM ベースの音声認識エンジンを実装しようとしています。これまでのところ、マージレイヤーの例に従って、双方向 LSTM をセットアップできました (双方向 LSTM として機能していると思います)。ここで、別の双方向 LSTM レイヤーで試してみたいと思います。これにより、深い双方向 LSTM になります。しかし、以前にマージされた 2 つのレイヤーの出力を LSTM レイヤーの 2 番目のセットに接続する方法がわかりません。Kerasで可能かどうかはわかりません。誰かがこれで私を助けてくれることを願っています。

私の単層双方向LSTMのコードは次のとおりです

私の x 値と y 値の寸法は次のとおりです。

0 投票する
1 に答える
6053 参照

python - Python keras 畳み込み層の後の入力のサイズを lstm 層に変更する方法

畳み込み層と lstm 層の間の接続に問題があります。データの形状は (75,5) で、時間ステップごとに 75 時間ステップ x 5 データ ポイントがあります。私がやりたいことは、(75x5)で畳み込みを行い、新しい畳み込み(75x5)データを取得し、そのデータをlstmレイヤーにフィードすることです。ただし、畳み込み層の出力の形状には、必要のないフィルターの数があるため、機能しません。したがって、畳み込み層の出力の形状は (1,75,5) であり、lstm 層に必要な入力は (75,5) です。最初のフィルターを取得するにはどうすればよいですか。

そして、これは出てくるエラーです:

0 投票する
1 に答える
999 参照

python - ノイズの多いシーケンスの Tensorflow LSTM

元の LSTM ペーパーで説明されている実験 3a を解決しようとしました: http://deeplearning.cs.cmu.edu/pdfs/Hochreiter97_lstm.pdf tensorflow LSTM を使用して失敗しました

論文から: タスクは、入力シーケンスを観察してから分類することです。2 つのクラスがあり、それぞれが確率 0.5 で発生します。入力行は 1 つだけです。最初の N 個の実数値シーケンス要素だけが、クラスに関する関連情報を伝えます。位置 t > N のシーケンス要素は、平均がゼロで分散が 0.2 のガウス分布によって生成されます。

彼が論文で説明したネット アーキテクチャ: 「1 つの入力ユニット、1 つの出力ユニット、およびサイズ 1 の 3 つのセル ブロックを備えた 3 層ネットを使用します。出力層は、メモリ セルからのみ接続を受け取ります。メモリ セルとゲート ユニット入力ユニット、メモリ セル、ゲート ユニットから入力を受け取り、バイアスの重みを持ちます. ゲート ユニットと出力ユニットは、[0; 1] ではロジスティック シグモイド、[-1; 1] では h、[-2; 2] では g です。 "

T=100、N=3 の 3 つの隠れユニットを持つ LSTM で再現しようとしましたが失敗しました。

元の論文で説明されているように、オンライントレーニングを使用しました(つまり、各シーケンスの後に重みを更新します)

私のコードのコアは次のとおりです。

入力を準備する

最後の出力を使用する

なぜ学習できなかったのか、何か考えはありますか?

私の最初の本能は、クラスごとに 1 つずつ 2 つの出力を作成することでしたが、論文では、彼は具体的に 1 つの出力ユニットしか言及していませんでした。

ありがとう

0 投票する
2 に答える
1011 参照

machine-learning - (双方向) 単純なテキスト分類用の RNN

TL;DR: 双方向 RNN は単純なテキスト分類に役立ちますか? パディングは悪ですか?

最近の仕事では、同じタスク、つまりテキスト分類のために LSTM モデルと BLSTM モデルを作成しました。LSTM モデルはかなり良い仕事をしましたが、BLSTM を試してみて、精度をさらに押し上げることができるかどうかを確認することにしました。最終的に、BLSTM は収束が非常に遅く、驚くべきことに、50% の確率でドロップアウトを適用したにもかかわらず、過適合であることがわかりました。

実装では、より高速なトレーニングを期待して、LSTM と BLSTM の両方に unrolled RNN を使用しました。要件を満たすために、入力テキストを手動で固定長にパディングしました。

「私は朝遅く寝て、Nebuchadnezzar とのインタビューを逃した」という文があるとします。この文は、事前にトレーニングされた単語埋め込みのインデックスの配列に変換されるときに、末尾に 0 が埋め込まれます。[21, 43, 25, 64, 43, 25, 6, 234, 23, 0, 0, 29, 0, 0, 0, ..., 0] のようになります。「th」(「the」である必要があります) はタイプミスであり、「Nebuchadnezzar」という名前はあまりにもまれであるため、両方とも語彙に存在しないため、特別な完全に対応する 0 に置き換えます。ゼロ ワード ベクトル。

ここに私の反省があります:

  1. 一部の人々は、コーパスをGloVeまたはWord2Vecモデルに供給する前に、未知の単語を「< unk >」のような特別な単語に変更することを好みます。トレーニングの前に、最初に語彙を構築し、(最小カウント設定に従って) 低頻度の単語を「< unk >」に変更する必要があるということですか? RNN をトレーニングするときに、不明な単語を 0 に変更したり、単に削除したりするよりも優れていますか?

  2. 私の知る限り、LSTM または BLSTM ネットワークに供給される末尾の 0 は、出力を混乱させます。外部からの新しい情報はありませんが、セルの状態は後続のタイム ステップごとに更新されるため、最終的なセルの出力は、後続の長い 0 によって大きな影響を受けます。そして、私の考えでは、BLSTM は逆の順序でテキストを処理するため、さらに影響を受けるでしょう。つまり、[0, 0, 0, ..., 0, 321, 231] のようなものです。ゲートを 1.0 に忘れて、最初にメモリを育成します。多くの人がパディングを使用しているのを見ますが、BLSTM の場合、テキストが非常に長くパディングされると災害が発生しませんか?

これらの問題について何か考えはありますか?:-o