gpt4 book ai didi

python - 在 Pybrain 中保存神经网络测试输出

转载 作者:太空宇宙 更新时间:2023-11-04 03:42:32 25 4
gpt4 key购买 nike

我用 pybrain 制作了一个监督神经网络,它工作得很好,当我用“trainer.testOnData(test_data, verbose=True)”测试它时,我可以看到输出(和错误),但我也想保存以供进一步分析。我找不到如何在 pybrain 文档上找到。使用过 pybrain 的人知道我该怎么做吗?谢谢(我希望这不是显而易见的事情)。

最佳答案

我和你有同样的问题,并快速回答问题:没有直接的方法来做到这一点。
但这当然是可行的。

乱用 pybrain 代码

这似乎是最简单的解决方案,这里有 BackpropTrainer.testOnData 的源代码。如您所见,如果 verbose 设置为 True,它会打印所有错误。

    if verbose:
print('All errors:', ponderatedErrors)
assert sum(importances) > 0
avgErr = sum(errors) / sum(importances)
if verbose:
print('Average error:', avgErr)
print(('Max error:', max(ponderatedErrors), 'Median error:',
sorted(ponderatedErrors)[len(errors) / 2]))
return avgErr

我们可以通过将最后一行更改为:

使其返回 avgErr 中的所有错误
return avgErr, ponderatedErrors

然后你捕获值只是解包结果:

avgErr, allErrors = trainer.testOnData(dataSet, verbose=True)

或者当您不希望出现所有错误时:

avgErr, _ = trainer.testOnData(dataSet, verbose=True)

这是最简单的解决方案。但并不是每个人都喜欢弄乱外部库的源代码。

更改标准输出,将其捕获到文件中并进行转换

这是几步过程,因为 testOnData 永远不会返回所有错误,只是打印它,这意味着您必须将字符串转换为有用的东西(让我们尝试使用列表)。

改变stdout打印到文件

这很简单:

import sys
sys.stdout = open('./OURFILE', 'w+')

所以现在当我们运行 testOnData 时,输出保存在文件中。

处理那个字符串

我们对文件的第二行很感兴趣,所以让我们开始吧:

our_file = open('./OURFILE', 'r')
our_file.next() # get rid of first line
our_line = our_file.next() # save second line

因为 pybrain 是如何编写的,我们的行看起来像这样:

('All errors:', HERE_IS_LIST_OF_ERRORS)

现在,我不是正则表达式向导,所以我只计算列表何时开始。

still_string = our_line[16:-1]

它将为我们提供仅包含一个列表的字符串。现在你可以使用 eval将 sting 更改为正确的列表:

list_of_errors = eval(still_string)

从这里,您可以使用 numpypandas和它一起玩。

希望对您有所帮助。

关于python - 在 Pybrain 中保存神经网络测试输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25596001/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com