PyBrain 在为训练器设置数据时出现 AssertionError
我正在尝试在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
要解决这个问题:
确保你的network
和ds
有相同的内部维度,比如:
>>> ds = ClassificationDataSet(191, 1)
>>> network = buildNetwork(191, 128, 1, bias=True)
>>> assert ds.indim == network.indim # 191 == 191, okay!