[source]

Embedding

keras.layers.embeddings.Embedding(input_dim, output_dim, embeddings_initializer='uniform', embeddings_regularizer=None, activity_regularizer=None, embeddings_constraint=None, mask_zero=False, input_length=None)

正の整数(インデックス)を固定次元の密ベクトルに変換します. 例)[[4], [20]] -> [[0.25, 0.1], [0.6, -0.2]]

このレイヤーはモデルの最初のレイヤーとしてのみ利用できます.

model = Sequential()
model.add(Embedding(1000, 64, input_length=10))
# the model will take as input an integer matrix of size (batch, input_length).
# the largest integer (i.e. word index) in the input should be no larger than 999 (vocabulary size).
# now model.output_shape == (None, 10, 64), where None is the batch dimension.

input_array = np.random.randint(1000, size=(32, 10))

model.compile('rmsprop', 'mse')
output_array = model.predict(input_array)
assert output_array.shape == (32, 10, 64)

引数

  • input_dim: 正の整数.語彙数.入力データの最大インデックス + 1.
  • output_dim: 0以上の整数.密なembeddingsの次元数.
  • embeddings_initializer: embeddings行列のInitializers
  • embeddings_regularizer: embeddings行列に適用するRegularizers
  • embeddings_constraint: embeddings行列に適用するConstraints
  • mask_zero: 真理値.入力の0をパディングのための特別値として扱うかどうか. これは入力の系列長が可変長となりうる変数を入力にもつRecurrentレイヤーに対して有効です. この引数がTrueのとき,以降のレイヤーは全てこのマスクをサポートする必要があり, そうしなければ,例外が起きます. mask_zeroがTrueのとき,index 0は語彙の中で使えません(input_dim は語彙数+1と等しくなるべきです).
  • input_length: 入力の系列長(定数). この引数はこのレイヤーの後にFlattenからDenseレイヤーへ接続する際に必要です (これがないと,denseの出力のshapeを計算できません).

入力のshape

shapeが(batch_size, sequence_length)の2階テンソル.

出力のshape

shapeが(batch_size, sequence_length, output_dim)の3階テンソル.

参考文献