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