2016-07-18 4 views
3

tf.nn.embedding_lookupがテンソルのリストを使用しているのに対して、tf.gatherはただ1つのテンソルでルックアップを実行するだけです。なぜ私は複数の埋め込みでルックアップを行う必要がありますか?なぜtf.nn.embedding_lookupは埋め込みリストを使用していますか?

大規模な埋め込みでメモリを節約するのに便利だと思いますが、どのように埋め込みを分割すると何が保存されるのかわからないので、これがどう機能するか分かりません。

+0

[tf.nn.embedding \ _lookup関数は何を行うのですか?](http://stackoverflow.com/questions/34870614/what-does-tf-nn-embedding-lookup-function-do) – valentin

答えて

6

tf.embedding_lookup関数は、埋め込み行列がであると仮定して、を断片化したものとみなします。実際には、埋め込み行列が一方向に分割されている場合には動作しますが、その場合はtf.gatherのように動作します。

もっと興味深いのは、埋め込み行列が大きく、1つのマシンのメモリに収まらない場合、または埋め込みルックアップ操作で高い帯域幅が必要な場合です。そのような場合、マトリックスを分割して分割することが役立ちます。このピースは、メモリにすべて収まるように複数のマシンに分散させることができます。また、ルックアップのためのより高い帯域幅のためのパラレル読み取りも可能です。

関連する問題