多くのニューラルネットワークライブラリには、KerasやLasagneのような「埋め込み層」があります。
ドキュメントを読んでも、その機能を理解しているかどうかはわかりません。たとえば、Kerasのドキュメントには次のように記載されています。
正の整数(インデックス)を固定サイズの密ベクトルに変換します。[[4]、[20]]-> [[0.25、0.1]、[0.6、-0.2]]
知識のある人がそれが何をするのか、いつそれを使うのかを説明できますか?
編集:ドキュメントの貼り付けに関して、ドキュメントから貼り付けることはあまりないので、私の質問です。私はそれがどのような変換を行うのか、なぜそれを使用すべきなのか理解していません。
とにかく、これはケラスで説明されている方法です:
埋め込み
keras.layers.embeddings.Embedding(input_dim、output_dim、init = 'uniform'、input_length = None、weights = None、W_regularizer = None、W_constraint = None、mask_zero = False)正の整数(インデックス)を固定サイズの密ベクトルに変換します、たとえば [[4]、[20]]-> [[0.25、0.1]、[0.6、-0.2]]
入力形状:形状を持つ2Dテンソル:(nb_samples、sequence_length)。出力形状:形状を持つ3Dテンソル:(nb_samples、sequence_length、output_dim)。引数:
input_dim:int> =0。語彙のサイズ。1+入力データで発生する最大整数インデックス。output_dim:int> =0。密な埋め込みの次元
そして、それはラザニアでそれがどのように説明されるかです:
単語を埋め込むためのレイヤー。入力は整数型のテンソル変数でなければなりません。
パラメーター:incoming:Layerインスタンスまたはタプル
このレイヤーに入力するレイヤー、または予想される入力形状。
input_size:int
さまざまな埋め込みの数。最後の埋め込みのインデックスはinput_size-1です。
output_size:int
各埋め込みのサイズ。
W:Theano共有変数、式、numpy配列または呼び出し可能
埋め込み行列の初期値、式または初期化子。これは、形状(input_size、output_size)の行列でなければなりません。詳細については、lasagne.utils.create_param()を参照してください。
例
>>> from lasagne.layers import EmbeddingLayer, InputLayer, get_output >>> import theano >>> x = T.imatrix() >>> l_in = InputLayer((3, )) >>> W = np.arange(3*5).reshape((3, 5)).astype('float32') >>> l1 = EmbeddingLayer(l_in, input_size=3, output_size=5, W=W) >>> output = get_output(l1, x) >>> f = theano.function([x], output) >>> x_test = np.array([[0, 2], [1, 2]]).astype('int32') >>> f(x_test) array([[[ 0., 1., 2., 3., 4.], [ 10., 11., 12., 13., 14.]], [[ 5., 6., 7., 8., 9.], [ 10., 11., 12., 13., 14.]]], dtype=float32)