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

Что означает эта ошибка и как ее исправить? Заранее спасибо!


person user3847447    schedule 24.07.2014    source источник
comment
Ленивое решение: отключить все утверждения, запустив скрипт с флагом -O.   -  person Kevin    schedule 24.07.2014


Ответы (2)


Оператор assert проверяет, верно ли условие. В этом случае, если внутреннее измерение (indim) вашего network совпадает с вашим набором данных, 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!
person dwitvliet    schedule 24.07.2014
comment
Лучше: network = buildNetwork(ds.indim, 128, ds.outdim, bias=True) - person Isaac Supeene; 10.12.2014

Оператор assert проверяет условие и возвращает логическое значение. Ошибка AssertionError сообщает вам, что результат assert dataset.indim == self.module.indim был ложным, что приводит к ошибке в коде и возврату ошибки Assertion. Если это ожидаемое условие для кода, который вы вводите, перехватите исключение и продолжите.

person papadoo    schedule 24.07.2014
comment
Ошибка утверждения связана с модулем, а не с его собственным кодом. - person dwitvliet; 24.07.2014