
382
|
第
13
章
让我们看一下如何手动实现嵌入以了解它们的工作原理(然后我们将使用一个简单的
Keras 层)。首先我们需要创建一个包含每个类别嵌入的嵌入矩阵,并随机初始化。每个
类别和每个 oov 桶都有一行,每个嵌入维度都有一列:
embedding_dim = 2
embed_init = tf.random.uniform([len(vocab) + num_oov_buckets, embedding_dim])
embedding_matrix = tf.Variable(embed_init)
在此示例中,我们使用 2D 嵌入,但是根据经验,嵌入通常有 10 到 300 个维度,具体取
决于任务和词汇表(你可以调整此超参数)。
该嵌入矩阵是一个随机的 6
×
2 矩阵,存储在一个变量中(因此可以在训练过程中通过梯
度下降对其进行调整):
>>>
embedding_matrix
<tf.Variable 'Variable:0' shape=(6, 2) dtype=float32, numpy=
array([[0.6645621 , 0.44100678],
[0.3528825 , 0.46448255],
[0.03366041, 0.68467236],
[0.74011743, 0.8724445 ],
[0.22632635, 0.22319686],
[0.3103881 , 0.7223358 ]], dtype=float32)>
让我们对与之前相同的分类特征进行编码,但是这次使用这些嵌入: ...