2015-12-25 13 views
7

私はtensorflowでword2vecを訓練することができました。これらの結果をlstm細胞で配列ラベリング用のrnnにフィードしたいと思います。TensorFlowでの配列ラベリング

1)訓練されたword2vecモデルをrnnに使用する方法については、実際にはわかりません。 (結果をフィードする方法)

2)シーケンスラベル付けの実装方法に関する多くのドキュメントが見つかりません。 (私のラベルはどうやって持ってくるのですか?)

この作業をどのように始めるべきか、誰かが正しい方向に向いてくれますか?

答えて

2

私はこれが少し前に投稿されたことを認識していますが、this Gist about sequence labelingthis Gist about variable sequence labelingがシーケンスラベリングの計算に本当に役立ちます。基本的なアウトライン(GISTの要旨):

  1. トレーニングと予測のためにネットワークをアンロール処理するためにdynamic_rnnを使用してください。このメソッドはAPIの中でいくつか動きましたので、あなたのバージョンに合わせて見つけなければならないかもしれませんが、ただGoogleだけです。
  2. データをサイズ[batch_size, sequence_length, num_features]のバッチに、ラベルをサイズ[batch_size, sequence_length, num_classes]のバッチに配置します。シーケンス内の各タイムステップのラベルが必要であることに注意してください。
  3. 可変長シーケンスの場合は、バッチ内の各シーケンスのdynamic_rnnラッパーの引数sequence_lengthに値を渡します。
  4. RNNのトレーニングは、ネットワーク構造を定義したら、他のニューラルネットワークのトレーニングと非常によく似ています。トレーニングデータとターゲットラベルをフィードし、学習するのを見てください!

そして、いくつかの注意点:可変長配列と

  1. 、あなたはあなたのエラーメトリクスやものを計算するためのマスクを構築する必要があります。上記の2つ目のリンクにすべてありますが、独自のエラーメトリックを作成するときは忘れないでください!私はこれを数回実行し、可変長シーケンスではもっと悪化しているように自分のネットワークを見せました。
  2. 損失関数に正規化項を追加することができます。私はこれがなければいくつかのコンバージェンスの問題がありました。
  3. 最初にtf.train.AdamOptimizerをデフォルト設定で使用することをおすすめします。データによっては、収束しない場合があり、設定を調整する必要があります。 This articleは、さまざまなノブが何をしているのかを説明してくれています。最初から読み始め、いくつかのノブはAdamセクションの前で説明されています。

これらのリンクは、今後他の人に役立つことを願っています。

6

まず、RNN tutorialsequence-to-sequence tutorialを読むことをお勧めします。 TensorFlowでLSTMを構築する方法について説明します。あなたがそれに慣れたら、適切な埋め込み変数を見つけて、事前に訓練されたword2vecモデルを使って割り当てる必要があります。

+0

しかし、どのように配列のラベル付けを処理しますか? – Milan

+0

そのため、シーケンスからシーケンスへ、またはRNNのエンコード/デコードから見る必要があります。入力シーケンスを一連のラベルにマップします。別の方法は、ラベルを割り当てるために入力シーケンスでCNNを訓練することです。 – j314erre

関連する問題