Embedding 层(tf.keras.layers.Embedding)文档翻译
Embedding 层(tf.keras.layers.Embedding)文档翻译
>>> model = tf.keras.Sequential()
>>> model.add(tf.keras.layers.Embedding(1000, 64, input_length=10))
>>> # 该模型将接收尺寸为 (批次大小, 输入长度) 的整数矩阵作为输入,
>>> # 且输入中最大的整数(即词索引)不应超过 999(词汇表大小)。
>>> # 此时模型的输出形状为 (None, 10, 64),其中 `None` 代表批次维度(批次大小可变)。
>>> input_array = np.random.randint(1000, size=(32, 10)) # 生成随机输入数组
>>> model.compile('rmsprop', 'mse') # 配置模型:优化器为rmsprop,损失函数为均方误差
>>> output_array = model.predict(input_array) # 模型预测
>>> print(output_array.shape) # 打印输出数组形状
(32, 10, 64)
输入形状(Input shape)
2D 张量,形状为:(批次大小, 输入长度)(即 (batch_size, input_length))。
输出形状(Output shape)
3D 张量,形状为:(批次大小, 输入长度, 输出维度)(即 (batch_size, input_length, output_dim))。
变量放置说明(Note on variable placement)
默认情况下,若存在可用 GPU,embedding矩阵将被放置在 GPU 上。这种设置能实现最佳性能,但可能引发以下问题:
所使用的优化器可能不支持稀疏 GPU 内核(sparse GPU kernels),此时训练模型会抛出错误。
embedding矩阵可能过大,无法放入 GPU 内存,此时会出现 “内存不足(OOM)错误”。
若遇到上述情况,应将embedding矩阵放置在 CPU 内存中。可通过 “设备作用域(device scope)” 实现,代码如下: