chainer.functions.embed_id(x, W, ignore_label=None)[source]

One-hotベクトル入力のための効率的な線形関数。

 

この関数はワードエンベディング(word embeddings) の実装です。この関数は、2つの引数をとります。すなわち、\(B\) 次元の整数(integer)ベクトル IDs(words)の集合 x と \(V \times d\) のfloat32の行列に埋め込まれたID(word)の集合 W  です。この関数は \(B \times d\) の行列を出力します。 この行列の i番目の列がWの x[i]番目の列です。

この関数は入力 Wにのみ微分可能です。

 

Parameters:
  • x (Variable or numpy.ndarray or cupy.ndarray) – IDのバッチベクトル。各要素は numpy.int32でなければならない。
  • W (Variable or numpy.ndarray or cupy.ndarray) – 各IDの分散表現 (別名:ワードエンベディング).
  • ignore_label (int or None) – ignore_label がint値の場合、戻り値のi-th 番目の列は 0で埋められる。
Returns:

出力値

Return type:

Variable

See also

EmbedID

 

Example

 



>>> x = np.array([2, 1]).astype('i')
>>> x array([2, 1], dtype=int32)
>>> W = np.array([[0, 0, 0],
... [1, 1, 1],
... [2, 2, 2]]).astype('f')
>>> W
array([[ 0., 0., 0.], [ 1., 1., 1.], [ 2., 2., 2.]], dtype=float32)
>>> F.embed_id(x, W).data
array([[ 2., 2., 2.], [ 1., 1., 1.]], dtype=float32)
>>> F.embed_id(x, W, ignore_label=1).data
array([[ 2., 2., 2.], [ 0., 0., 0.]], dtype=float32)