PyBrain 在为训练器设置数据时出现 AssertionError

2 投票
2 回答
2763 浏览
提问于 2025-04-18 14:39

我正在尝试在Python中建立一个神经网络(使用PyBrain)来进行预测。我已经用一个小的模拟数据集建立了一个网络,但当我想把这个网络扩展到更大的数据集时,遇到了一个AssertionError的问题。以下是我的代码:

ds = ClassificationDataSet(231, 1)

for x in range(inputData[0].size):
     ds.addSample(inputData[:,x], inputAnswers[x])

network = buildNetwork(191, 128, 1, bias=True, hiddenclass=TanhLayer)
network.randomize()
trainer = BackpropTrainer(network)
trainer.setData(ds)

这是我收到的错误信息:

File "ANN_rawData.py", line 45, in <module>
trainer.setData(ds)
File "[path]", line 22, in setData
assert dataset.indim == self.module.indim
AssertionError

这个错误是什么意思,我该如何解决呢?谢谢大家!

2 个回答

-3

assert语句用来检查一个条件,并返回一个真假值。AssertionError是告诉你,assert dataset.indim == self.module.indim这个条件的结果是假的,这导致代码出错,从而返回了AssertionError。如果这是你输入的代码中一个预期的情况,那就捕获这个异常,然后继续执行。

4

assert语句用来检查一个条件是否为真。在这个例子中,它是在检查你的network的内部维度(indim)是否和你的数据集ds相同。因为它们不相同,所以就出现了错误:

>>> ds = ClassificationDataSet(231, 1)
>>> network = buildNetwork(191, 128, 1, bias=True)
>>> assert ds.indim == network.indim   # 231 != 191, error!
AssertionError

要解决这个问题:

确保你的networkds有相同的内部维度,比如:

>>> ds = ClassificationDataSet(191, 1)
>>> network = buildNetwork(191, 128, 1, bias=True)
>>> assert ds.indim == network.indim # 191 == 191, okay!

撰写回答