我开始使用Keras构建神经网络模型 .
我有一个分类问题,其中的功能是离散的 . 为了管理这种情况,标准过程包括使用单热编码转换二进制数组中的离散特征 .
然而,似乎使用Keras这一步骤不是必需的,因为可以简单地使用嵌入层来创建这些离散特征的特征向量表示 .
如何执行这些embeddings?
我的理解是,如果离散特征 f
可以假设 k
值,则嵌入层会创建一个包含 k
列的矩阵 . 每次我在训练阶段收到该功能的值(例如 i
)时,只会更新矩阵的 i
列 .
我的理解是否正确?
1 回答
人们可能很容易注意到 - 一个
one-hot
向量与Embedding
矩阵的乘法可以在一个恒定的时间内有效地执行,因为它可以被理解为矩阵切片 . 而这正是Embedding
层在计算过程中所做的事情 . 它只是使用gather
后端函数选择适当的索引 . 这意味着您对Embedding
图层的理解是正确的 .