embedding层_keras-Embedding层

cbeff91ee6b8ca511dc1beb1780a134e.png

嵌入层(Embedding Layer)是使用在模型第一层的一个网络层,其目的是将所有索引标号映射到致密的低维向量中,比如文本集[[4],[32],[67]]被映射为[[0.3,0.9,0.2],[-0.2,0.1,0,8],[0.1,0.3,0.9]]。该层通常用于文本数据建模。输入数据要求是一个二维张量:(1个批次内的文本数,每篇文本中的词语数),输出为一个三维张量:(1个批次内的文本数, 每篇文本中的词语数,每个词语的维度)。用下图来描述数据经过该层的过程:

8f4b4c4f8d604bd460e610ece7e36cf5.png

上图中,1个批次内的文本数为32,每篇文本中的词语数为4,输入为(32,4)的张量,输出为(32,4,128)的三维张量,嵌入层参数矩阵形状为(|V|,128)。在Keras中,用下边的代码定义该嵌入层Embedding(input_dim=vocab_size, output_dim=128, input_length=4)。

原型

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)

参数

  • input_dim: 整数> 0。词汇表大小, i.e. maximum integer index + 1。
  • output_dim: 整数>= 0. 稠密嵌入矩阵的维度,也是词语向量的维度。
  • embeddings_initializer: 应用于嵌入层矩阵的初始化器。(see initializers)。
  • embeddings_regularizer: 应用于嵌入层矩阵的正则化函数 (see regularizer)。
  • activity_regularizer: 应用于输出层的正则化函数。 (see regularizer)。
  • embeddings_constraint: 应用于嵌入层矩阵的限制函数。 matrix (see constraints).
  • mask_zero: 0是否作为特定的填充值。在使用循环层 recurrent layers 时非常有用,因为循环层的输入为可变长度。如果该值为True 那么之后模型中的所有层需要支持masking否则会触发exception。 如果mask_zero 被设置为True, 那么词汇表不能使用索引值0(input_dim 的值应该等于 词汇表大小+ 1)。
  • input_length: 当该值为常量时,表示一个文本词序列的长度。如果你在该层后要使用 Flatten 以及 Dense 层,该参数是必须设置的 (不设置该参数值,全连接层Dense输出形状无法计算)。

输入形状

2维张量,形状为(batch_size, sequence_length)。

输出形状

3维张量,形状为(batch_size, sequence_length, output_dim)。

官网示例

from keras.models import Sequential
from keras.layers import Embedding
import numpy as np

model = Sequential()
# 模型将形状为(batch_size, input_length)的整数二维张量作为输入
# 输入矩阵中整数(i.e. word index)的最大值小于等于999(vocabulary size).
# 模型输出的三维张量形状为model.output_shape == (None, 10, 64), None为batch_size的大小
# 嵌入层矩阵的维度为64
model.add(Embedding(1000, 64, input_length=10))
# 定义输入矩阵形状为(32,10),索引值范围为(0,999)
input_array = np.random.randint(1000, size=(32, 10))
model.compile('rmsprop', 'mse')
output_array = model.predict(input_array)
# 经过嵌入层后的输出三维张量的形状为(32,10,64)
assert output_array.shape == (32, 10, 64)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值