就网络结构以及它如何降低维度而言,我对一种热编码和词嵌入感到非常困惑。
我目前正在使用带有 c# 的 encog,它有一些文档,但没有很多不同的示例。
如果我以神经网络的文本分类为例,有: 1000 个不同的文本 10,000 个唯一词
我之前所做的是获取每个文本,然后计算出唯一的单词并将它们放在一个列表中。然后我会计算出每个唯一单词在文本中出现的次数,最终得到一个矩阵:
1000 x 10,000 即对于每个文本,计算每个唯一单词出现的次数(文本作为行,唯一单词(特征)作为列)。
然后我会对其进行规范化并使用等边编码(类似于一个热编码)。
然后,我的网络将包含 10,000 个输入神经元(每个单词(特征)一个),然后是一个隐藏层,然后是一个输出层,试图预测具有 5 个不同值的输出列的分类。
这似乎是完全错误的,但它确实训练并且非常准确。我正在尝试使用一种热编码来解决矩阵大小、这些矩阵的组成以及网络布局方面的确切含义。
这也与使用词嵌入有关,因为当我使用它时,我得到以下大小:1000(文本数量)、872(文本大小)、300(向量大小)。因此,我有 3 个维度,这让我想到了一种我可能应该拥有的热编码:1000、872、10000(唯一词)。
如果有人可以解释我在这里出错的地方以及我如何处理一个热编码文本分类与使用嵌入式层之间的区别:
1000 个文本,10000 个唯一词,872 个文本长度和 300 个向量大小