2016-08-11 3 views
2

tf.nn.embedding_lookup_sparseのAPIドキュメントを読むのに多くの時間を費やしています。 embedding_lookup_sparseの意味は混乱しており、embedding_lookupとはかなり異なるようです。TensorFlowのtf.nn.embedding_lookup_sparseの意味は何ですか?

私が間違っている場合、ここに私の考えと私を修正してください。ワイドおよびディープモデルの例では、contrib.layers APIを使用し、疎機能のcolumeにはembedding_lookup_sparseを呼び出します。 SparseTensor(例えば、国が疎である)を取得した場合、実際には1ホストエンコーディング用の埋め込みが作成されます。次にto_weights_sumと呼び出してembedding_lookup_sparseの結果をprediction、埋め込みをvariableと返します。

embedding_lookup_sparseの結果は、biasを追加し、損失機能とトレーニング操作のためにlogitsになります。つまり、embedding_lookup_sparseは、高密度テンソルの場合はw * x(部分はy = w * x + bの部分)のようになります。ルックアップデータは常に1およびその他の0 Sを追加する必要はありませんですので

はたぶんワンホットエンコーディングやSparseTensorため、embedding_lookup_sparseからweightは、実際にw * xの値です。

私が言ったことも混乱しています。誰もこれを詳細に説明するのを助けることができますか?

答えて

1

ルックアップを組み込むこととルックアップを埋め込むことの主な違いは、スパースバージョンではIDと重みがSparseTensorタイプであることが予想されることです。検索を埋め込むことは仕組み

あなたは、いくつかの大きさのテンソルに渡し、embedding_lookup_sparseは(もsp_weightとして渡されたいくつかの重量によってテンソルのスライス(sp_idsパラメータによって参照されるスライス)を乗算します。デフォルトに値1)、新しいスライスが返されます。

バイアス用語はありません。テンソルのスライスを、出力に複数の要素を要素として含めるように参照することによって、それらを一緒に追加することができます。

関連する問題