NER問題のTensorFlowシーケンシャルモデルにCRFレイヤーを実装しようとしています。どうすればいいのかわかりません。以前、CRFを実装したとき、バックエンドとしてtensorflowを使用してkerasからCRFを使用しました。つまり、tensorflowではなくkerasでモデル全体を作成し、モデル全体をCRFに渡しました。機能した。
しかし、tensorflow2.0.0ベータにはすでにkerasが組み込まれているため、Tensorflowでモデルを開発したいと思います。シーケンシャルレイヤーを構築し、双方向のlstmレイヤーの後にCRFレイヤーを追加しようとしています。どうすればいいのかわかりませんが。tensorflow-addonsのCRFドキュメントを確認しましたが、フォワードCRFなどのさまざまな関数が含まれていますが、それらをレイヤーとして実装する方法がわかりませんか?シーケンシャルテンソルフローモデル内にCRFレイヤーを実装することは可能ですか、それともモデルグラフを最初から作成してからCRF関数を使用する必要がありますか?誰か助けてくれませんか。前もって感謝します
トレーニングプロセス:
tfa.text.crf_log_likelihood(
inputs,
tag_indices,
sequence_lengths,
transition_params=None
)
入力は単項ポテンシャル(ロジスティック回帰の場合と同様で、この回答を参照できます)であり、ここでは、ロジット(通常はソフトマックス活性化関数後の分布ではありません)または状態です。エンコーダーの各文字のBiLSTM(上の図のP1、P2、P3、P4;)。
tag_indicesはターゲットタグインデックスであり、sequence_lengthsはバッチ内のシーケンスの長さを表します。
transition_paramsはバイナリポテンシャル(タグが1つのタイムステップから次のタイムステップに移行する方法)であり、マトリックスを自分で作成することも、APIに任せることもできます。
推論プロセスでは:このAPIを
利用するだけです:
tfa.text.viterbi_decode(
score,
transition_params
)
スコアはトレーニングと同じ入力(P1、P2、P3、P4状態)を表し、transition_paramsもトレーニングプロセスでトレーニングされたものです。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加