Translate

2016年10月18日火曜日

TensorFlow の tf.nn.embedding_lookup() を調べる

word2vec_basic.py を相変わらず読んでいるが..

さっぱりわからん..

ようやく、generate_batch()が何やってるかわかったのだけど、肝心の計算グラフがよくわからん..

特に tf.nn.embedding_lookup() 。

なのでTensorFlowサイトの該当するリファレンスっぽい箇所を翻訳してみた。


今回は、いつも以上に翻訳結果がよくわからない..
一応載せますが、載せてる本人まったく正しいかどうか自信なし。

参照する方は、at your own risk でお願いします。
--------

tf.nn.embedding_lookup(params, ids, partition_strategy='mod', name=None, validate_indices=True)




埋め込みテンソルのリストからidsをlookupする。

この関数はparams 内のテンソルのリスト上を並列lookup処理を実行するために使用されます。paramsが大きな埋め込みテンソルの分割として解釈される場合、この関数はtf.gather()の生成となります。
 

もし len(params) >1 であれば、idsの各要素は partition_strategy に従って params の要素を分割します。すべての戦略において、もしid空間がパーティションを均等な数に分けられない場合、最初の (max_id + 1) % len(params) 個の各パーティションは、もう一つのidを割り当てられます。

もし partition_strategy "mod" であれば、パーティション pp = id % len(params) となるよう各idを割り当てます。例えば、13個のidは次のような5つのパーティションに分割されます:[[0, 5, 10], [1, 6, 11], [2, 7, 12], [3, 8], [4, 9]]

もし partition_strategy"div" であれば、隣接法でidをパーティションに割り当てます。この場合、13個のidは次のような5つのパーティションに分割されます:[[0, 1, 2], [3, 4, 5], [6, 7, 8], [9, 10], [11, 12]]

lookupの結果は密度テンソルへ連結されます。返却されたテンソルは shape(ids) + shape(params)[1:] 形式です。


-----

lookupは検索とか索引とかの意味だけど、ここは何なんだろう..

tf.gater()も調べないとダメかな..

ということで、コッチも翻訳してみた。
以下、at your own risk で参照してください。

-----

tf.gather(params, indices, validate_indices=None, name=None)


indices (インデックスの複数形) に従って params からスライスを集約します。

indices は、(一般的には0次元もしくは1次元の)整数テンソルであるべきです。 indices.shape + params.shape[1:] 形式のアウトプットテンソルを作成します:


# スカラ indices
output[:, ..., :] = params[indices, :, ... :]

# ベクトル indices
output[i, :, ..., :] = params[indices[i], :, ... :]

# 高階 indices
output[i, ..., j, :, ... :] = params[indices[i, ..., j], :, ..., :]

もし indices が配列で len(indices) == params.shape[0] であるならば、indicesに従ってこの操作はparamsを置換します。


 

引数:


  • params:テンソル
  • indices:テンソル。int32もしくはint64形式でなければならない
  • validate_indices:オプションの真偽値。デフォルトは真
  • name:オペレーションの名前(オプション)

戻り値:

テンソル。paramsと同じタイプ。
-----

ためにに実行してみないと、さっぱりわからんなあ..

ちなみに、以下のかんじで実行して試すことができます。



いりいろやってみた。





..なるほどね、実際にイロイロ入れてみたほうがわかりやすいかもね..

Excelのうんちゃらlookupをイメージした方がいいのか..

0 件のコメント:

bolt.new をローカルPC(Windows10)で動かす

生成AIによるコード生成ツールはだいぶ進化しており、 ユーザ要件を入力するとJavaScript/TypeScriptコードにしてくれる サービスが登場し始めた。 特に、 bolt.new はOSS(MITライセンス)があり ローカルPCで動作するとのこと。 ただ生成AIモデルは...