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 并包含缓存结果的功能。
所以,您的猜测似乎是正确的:这两个人在做类似的事情,依赖于不同的输入表示,包含一些不会改变他们所做事情本质的逻辑。
我几乎所有项目都使用 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 并包含缓存结果的功能。
所以,您的猜测似乎是正确的:这两个人在做类似的事情,依赖于不同的输入表示,包含一些不会改变他们所做事情本质的逻辑。