TensorFlow 中 feature_column.embedding_column 和 keras.layers.Embedding 的区别

Difference between feature_column.embedding_column and keras.layers.Embedding in TensorFlow

我几乎所有项目都使用 keras.layers.Embedding。但是,最近我想 fiddle 和 tf.data 并找到 feature_column.embedding_column.

来自文档:

feature_column.embedding_column - DenseColumn 从稀疏的分类输入转换而来。 当您的输入稀疏但您想将它们转换为密集时使用此方法 表示(例如,馈送到 DNN)。

keras.layers.Embedding - 将正整数(索引)转换为固定大小的密集向量。 例如[[4], [20]] -> [[0.25, 0.1], [0.6, -0.2]] 该层只能用作模型中的第一层。

我的问题是,api 是否在不同类型的输入数据上做类似的事情(例如输入 - [0,1,2] 对于 keras.layers.Embedding 及其一个 -热编码代表 [[1,0,0],[0,1,0],[0,0,1] for feature_column.embedding_column)?

在查看这两个操作的源代码后,我发现:

  • 这两个操作都依赖于tensorflow.python.ops.embedding_ops 功能;
  • keras.layers.Embedding 使用 dense 表示并包含通用的 keras 代码,用于处理形状、初始化变量等;
  • feature_column.embedding_column 依赖于 sparse 并包含缓存结果的功能。

所以,您的猜测似乎是正确的:这两个人在做类似的事情,依赖于不同的输入表示,包含一些不会改变他们所做事情本质的逻辑。