PyBrain - 如何根据测试数据验证我训练有素的网络?

Posted

技术标签:

【中文标题】PyBrain - 如何根据测试数据验证我训练有素的网络?【英文标题】:PyBrain - how to validate my trained network against a test data? 【发布时间】:2013-05-14 06:43:47 【问题描述】:

所以我在 PyBrain 中有一个 ClassificationDataSet,我已经使用适当的数据进行了训练。即输入如下:

trainSet.addSample([0,0,0,0],[1])
trainSet.addSample([0,0,0,1],[0])
trainSet.addSample([0,0,1,0],[0])
trainSet.addSample([0,0,1,1],[1])
trainSet.addSample([0,1,0,0],[0])
trainSet.addSample([0,1,0,1],[1])
trainSet.addSample([0,1,1,0],[1])
trainSet.addSample([0,1,1,1],[0])
trainSet.addSample([1,0,0,0],[0])
trainSet.addSample([1,0,0,1],[1])

图案很简单。如果有偶数个 1,则输出应为 1,否则为 0。我想运行以下输入:

[1,0,0,1],[1]
[1,1,0,1],[0]
[1,0,1,1],[0]
[1,0,1,0],[1]

并查看神经网络是否会识别模式。如前所述,我已经训练了网络。如何根据上述输入验证它?

感谢您的宝贵时间!

【问题讨论】:

【参考方案1】:

您首先必须create a network 和train it on your dataset。

然后您必须使用activate 从您的输入中获取结果并测试它是否与所需的输出匹配。

一个简单的方法是:

testOutput =  [1,0,0,1] : [1], [1,1,0,1] : [0], [1,0,1,1]:[0], [1,0,1,0]:[1] 

for input, expectedOutput in testInput.items():
    output = net.activate(input)
    if output != expectedOutput:
        print " didn't match the desired output." 
        print "Expected , got ".format(input, expectedOutput, output)

【讨论】:

.activate() 返回什么?我不断收到花车,这让我很困惑.. 需要解释一下吗? 添加了文档链接(激活时);我不是 PyBrain 用户,目前正在安装这个包来做这个方法的最小测试。 糟糕。我把你的数据集误认为是网络。添加了一些链接以澄清事情。 嘿,非常感谢您的努力!!!我已经创建了一个网络和一个数据集并使用该数据集训练了网络.. 但是.. 我不断得到有趣的结果.. 像 [[ 0. ] [ 0.64476526] [ 0.54229964] [ 0.3103782 ]] 在我调用这些激活之后values.. 你能告诉我这些值是什么意思吗?? 返回的值取决于您使用的网络类型。我猜有些网络会在数据集中给出的输入之间进行某种插值。 (并且可能不会返回您提供给他们的确切数据)

以上是关于PyBrain - 如何根据测试数据验证我训练有素的网络?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 PyBrain 中使用函数 normalize()?

训练 LSTM 神经网络以预测 pybrain、python 中的时间序列

神经网络训练中一个时代的意义

使用 PyBrain 进行神经网络训练不会收敛

如何在没有交叉验证的情况下运行网格搜索?

如何将数据分成 3 组(训练、验证和测试)?