我有点困惑于使用encog来创建一个神经网络。
我正在尝试一个基本的前馈网络文本分类。对于输入数据,我有200个独特的单词(特征/输入)输入到网络和100个不同的文本。所以我有一个100x230的矩阵,基本上是100个不同的训练项目,每个训练项目的频率为230个单词。然后,我有一个输出,它将数据分类为A、B、C、D或E,所以一列和5个不同的输出,因此这是一个序数列,是我读取的CSV数据集的一部分,因此我实际上有一个100X231的矩阵,其中231列是我希望分类的输出。
我可以训练和运行这个神经网络没有问题,但我对输出神经元的数量感到困惑。我原以为有5种不同的分类,所以我应该有5种不同的神经元,但是我不能像这样设置代码,因为它抱怨:
IMLDataSet trainingSet = new BasicMLDataSet(input, ideal);我的输入变量是一个双100,理想的只是预期分类的列,所以双100。因为我只有一列数据是标准化的,A,B,C.值被转换为-1到1之间的数字,因此当我运行带有5个输出神经的神经网络时,它会抱怨应该只有1。
当我运行一个神经元输出的神经网络时,它给出的答案看起来是正确和准确的,但它给出的值介于-1和1之间。我假设激活级别与输出匹配?
因此,我的问题是,如何去修饰这个输出,以回到我实际的字母分类,或者如何使用输出上的5个神经元,以便网络选择适当的分类。
我的神经网络如下:
BasicNetwork network = new BasicNetwork();
network.AddLayer(new BasicLayer(null, true, 230));
network.AddLayer(new BasicLayer(new ActivationTANH(), true, 16));
network.AddLayer(new BasicLayer(new ActivationTANH(), false, 1));
network.Structure.FinalizeStructure();
network.Reset();发布于 2018-03-19 14:51:36
需要对编码列的数据进行规范化,然后对输出进行变性,从而给出正确的分类。
https://datascience.stackexchange.com/questions/29122
复制相似问题