tf.keras.layers.Embedding() 详解

Embedding layery

参数如下: 

tf.keras.layers.Embedding(
    input_dim,
    output_dim,
    embeddings_initializer="uniform",
    embeddings_regularizer=None,
    activity_regularizer=None,
    embeddings_constraint=None,
    mask_zero=False,
    input_length=None,
    **kwargs
)

输入:二维张量:(batch_size, input_length)

输出: 3D 张量:(batch_size, input_length, output_dim)

参数详解:

  • input_dim:整数(>= 0),词汇表中最大值+1
  • output_dim:的整数(> 0),嵌入向量的维度
  • embeddings_initializer: 嵌入矩阵的初始化方法,为预定义初始化方法名的字符串,或用于初始化权重的初始化器。
  • embeddings_regularizer: 嵌入矩阵的正则项,为Regularizer对
  • embeddings_constraint: 嵌入矩阵的约束项,为Constraints对象
  • mask_zero:布尔值,确定是否将输入中的‘0’看作是应该被忽略的‘填充’(padding)值,该参数在使用递归层处理变长输入时有用。设置为True的话,模型中后续的层必须都支持masking,否则会抛出异常。如果该值为True,则下标0在字典中不可用,input_dim应设置为|vocabulary| + 1
  • input_length:当输入序列的长度固定时,该值为其长度。如果要在该层后接Flatten层,然后接Dense层,则必须指定该参数,否则Dense层的输出维度无法自动推断。

input_dim为什么要词汇表中最大值+1

创建层时,它将随机初始化嵌入矩阵(形状为(input_dimoutput_dim)),然后将词汇表中的数字当作索引,返回相应的行。否则会越界报错。

 想进一步了解Embedding请看:机器学习实战(第二版)读书笔记(5)—Embedding 

猜你喜欢

转载自blog.csdn.net/qq_42018521/article/details/128851594