RNN および Seq2Seq モデルで使用可能な関数を指定する API リファレンスはどこにありますか?
github ページでは、rnn と seq2seq が tf.nn に移動されたと言及されていました。
RNN および Seq2Seq モデルで使用可能な関数を指定する API リファレンスはどこにありますか?
github ページでは、rnn と seq2seq が tf.nn に移動されたと言及されていました。
[注: この回答は r1.0 用に更新されています ...legacy_seq2seq
の代わりに説明していますtensorflow/tensorflow/contrib/seq2seq/
]
幸いなことに、tensorflow で提供される seq2seq モデルは、埋め込み、バケット、アテンション メカニズム、1 対多のマルチタスク モデルなどを含めて非常に洗練されています。
悪いニュースは、Python コードには多くの複雑さと抽象化のレイヤーがあり、コード自体は、私が知る限り、高レベルの RNN と seq2seq "API" の利用可能な最高の "ドキュメント" であるということです...ありがたいことに、コードは十分にドキュメントストリング化されています。
実際には、以下に示す例とヘルパー関数は、主にコーディング パターンを理解するための参照に役立つと思います。ほとんどの場合、下位レベルのPythonの基本関数を使用して必要なものを再実装する必要があります。 API
バージョン r1.0 の時点での RNN seq2seq コードの内訳を上から下に示します。
models/tutorials/rnn/translate/translate.py
...英語をフランス語に翻訳するためにすぐに使える 、 を提供しmain()
ますtrain()
...decode()
しかし、このコードを他のデータセットに適応させることができます
モデル/チュートリアル/rnn/翻訳/seq2seq_model.py
...class Seq2SeqModel()
埋め込み、バケット、注意メカニズムを備えた洗練されたRNNエンコーダー/デコーダーをセットアップします...埋め込み、バケット、または注意が必要ない場合は、同様のクラスを実装する必要があります。
テンソルフロー/テンソルフロー/contrib/legacy_seq2seq/python/ops/seq2seq.py
...ヘルパー関数を介した seq2seq モデルのメイン エントリ ポイント。model_with_buckets()
、embedding_attention_seq2seq()
、embedding_attention_decoder()
、などattention_decoder()
を参照してくださいsequence_loss()
。例には、one2many_rnn_seq2seq
および 埋め込み/注意のないモデルも含まれbasic_rnn_seq2seq
ます。これらの関数が受け入れるテンソルにデータを詰め込むことができる場合、これは独自のモデルを構築するための最良のエントリ ポイントになる可能性があります。
テンソルフロー/テンソルフロー/contrib/rnn/python/ops/core_rnn.py
static_rnn()
...通常は必要のないベルとホイッスルのようなRNNネットワークのラッパーを提供するため、代わりに次のようなコードを使用します。
def simple_rnn(cell, inputs, dtype, score):
with variable_scope.variable_scope(scope or "simple_RNN") as varscope1:
if varscope1.caching_device is None:
varscope1.set_caching_device(lambda op: op.device)
batch_size = array_ops.shape(inputs[0])[0]
outputs = []
state = cell.zero_state(batch_size, dtype)
for time, input_t in enumerate(inputs):
if time > 0:
variable_scope.get_variable_scope().reuse_variables()
(output, state) = cell(input_t, state)
outputs.append(output)
return outputs, state
これまでのところ、rnn 関数に関する API リファレンスもサイトで見つかりません。
ただし、関数リファレンスとして github の各関数のコメントを参照できると思います。
https://github.com/tensorflow/tensorflow/blob/master/tensorflow/python/ops/rnn.py
https://github.com/tensorflow/tensorflow/blob/master/tensorflow/python/ops/rnn_cell.py
TensorFlow の現在/マスター バージョンの RNN ドキュメント: https://www.tensorflow.org/versions/master/api_docs/python/nn.html#recurrent-neural-networks
TensorFlow の特定のバージョンの RNN ドキュメント: https://www.tensorflow.org/versions/r0.10/api_docs/python/nn.html#recurrent-neural-networks
興味のある方のために、最初に RNN ドキュメントが利用できなかった理由についていくつかのメモを示します: API ドキュメントには RNN がリストされていません