問題タブ [recurrent-neural-network]
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.
tensorflow - テンソルフロー RNN で y(t) を生成するための入力として、最後の出力 y(t-1) をどのようにフィードできますか?
(y(t-1))
最後の出力が非表示状態の更新に参加するように、Tensorflow で単層 RNN を設計したいと考えています。
y(t - 1)
非表示状態を更新するための入力として最後の入力をフィードするにはどうすればよいですか?
tensorflow - Tensorflow で特別な出力ワードを生成した後に RNN を停止するにはどうすればよいですか?
シーケンスからシーケンスへの学習用のエンコーダー/デコーダー モデルを実装したいと考えています。
Encoder は入力シーケンスを単語ごとに読み取り、その非表示状態を更新します。
Decoder は、encoder の隠し状態を使用して、その隠し状態を初期化します。次に、最後に生成された出力 (y(t-1)) とその隠れ状態に関する出力を生成します。特殊な出力 () が生成されたら、この手順を停止したいと考えています。実際、さまざまな長さの出力を生成できるようにしたいと考えています。Tensorflowでそれを行うにはどうすればよいですか?
machine-learning - seq2seq tensorflow RNN トレーニング モデルの最大バッチ サイズを決定する方法
現在、seq2seq tensorflow モデルのバッチ サイズとしてデフォルトの 64 を使用しています。Haswell-E xeon 128GB RAM を搭載した 12 GB RAM を搭載した単一の Titan X GPU で使用できる最大バッチ サイズ、レイヤー サイズなどを教えてください。入力データは埋め込みに変換されます。以下は、私が使用しているいくつかの役立つパラメーターです。セルの入力サイズは 1024 のようです。
私のハードウェアに基づいて、最大のバッチサイズ、レイヤー、入力サイズはどれくらいですか? 現在、GPU は 99% のメモリが占有されていることを示しています。
python - TensorFlow: この損失計算の実行
私の質問と問題は、2 つのコード ブロックの下に記載されています。
損失関数
で使用されている
すべてが 1 か所で行われるように、コードをフラット化しようとしました。タイプミス/混乱のポイントがある場合はお知らせください。
私の問題
問題は、これがエラーを返すことです:
したがって、これは TensorFlow が、TF の範囲外で numpy によって損失が実行されるため、損失の勾配を計算できないと不平を言っていると思います。
当然のことながら、これを修正して TensorFlow で実装しようと思います。問題は、 mylogit_lengths
とlabel_lengths
が両方とも Tensor であるため、単一の要素にアクセスしようとすると、形状 [] の Tensor が返されることです。これは、パラメータに を取る which を使用しようとしているときの問題ですtf.nn.top_k()
。Int
k
それに関するもう1つの問題label_lengths
は、プレースホルダーであり、呼び出しのloss
前に値を定義する必要があるため、プレースホルダーに値を渡す必要があるというエラーも表示されます。optimizer.minimize(loss)
この損失関数をどのように実装できるか疑問に思っています。または、明らかな何かが欠けている場合。
編集:さらに読んだ後、通常、私が説明したような損失は検証で使用され、真の損失と同じ場所で最小化される代理損失のトレーニングで使用されることがわかりました。私のような編集距離ベースのシナリオに使用される代理損失を知っている人はいますか?
python - 再帰層による奇妙な勾配の結果
私は非常に基本的な再帰型ネットワークで実験を行っており、非常に奇妙な動作を見てきました。どこがうまくいかないかを絞り込むためにかなりの時間を費やしましたが、再帰層を使用すると、theano と有限微分によって計算される勾配が根本的に異なることがわかりました。ここで何が起こっているのですか?
これが私が抱えている問題の種類です:
n_class クラス間のラベルとともに、次元 n_feat の n_steps 特徴ベクトルの n_seq シーケンスがあります。ラベルは、シーケンスごとではなく、時間ステップごとです (したがって、n_seq*n_steps ラベルがあります)。私の目標は、モデルをトレーニングして、特徴ベクトルを正しく分類することです。
これが私の最小限の例です:
(実際には、データにはシーケンシャルな情報が含まれているため、再帰型ネットワークの方がうまくいくはずですが、この最小限の例では純粋にランダムなデータを生成します。これはバグを明らかにするのに十分です。)
2 つの最小限のネットワークを作成します。
1) 通常のフィード フォワード (再帰的ではない)。入力層とソフトマックスを含む出力層 (隠れ層なし) のみ。n_seq*n_steps の「独立した」特徴ベクトルの「バッチ」を考慮して、順次情報を破棄します。
2) 同一のネットワークですが、出力層は再帰的です。バッチのサイズは n_seq になり、各入力は n_steps 特徴ベクトルの完全なシーケンスになります。最後に、出力をサイズ n_seq*n_steps の「バッチ」に戻します。
再帰重みが 0 に設定されている場合、2 つのネットワークは同等である必要があります。実際、この場合、フィードフォワード重みのランダムな初期化に関係なく、両方のネットワークの初期損失が同じであることがわかります。有限微分を実装すると、フィードフォワードの重みの (初期の) 勾配が (本来あるべきように) 同じであることもわかります。ただし、theano から得られる勾配は根本的に異なります (ただし、リカレント ネットワークの場合のみ)。
サンプル結果を含む私のコードは次のとおりです。
注:初めて実行すると、この警告が表示されます。何が原因かわかりませんが、私の問題に関連していると思います。警告: 厳密モードでは、必要なすべての共有変数を non_sequences の一部として渡す必要があります 'must be pass as a part of non_sequences', 警告)
どんな洞察も大歓迎です!
コード:
結果: