модуль pickle не может правильно загрузить объект pybrain.
т.е. после загрузки “сетка” перестает тренироваться.
например:
import pickle from pybrain.tools.shortcuts import buildNetwork from pybrain.datasets import SupervisedDataSet from pybrain.supervised.trainers import BackpropTrainer class summator(): def __init__(self): self.x = [] self.net = buildNetwork(2,5,5,1) self.ds = SupervisedDataSet(2,1) self.ds.addSample([1,1],1) self.ds.addSample([0,0],1) self.ds.addSample([1,0],0) self.ds.addSample([0,1],0) self.trainer = BackpropTrainer(self.net, self.ds) def add(self, dx): self.x.append(dx) def GetData(self): return self.x def Save(self, filename): pickle.dump(self, open(filename,'wb')) def TrainNet(self): res = self.trainer.train() return res
и после запуска делаем следующее
>>> a = summator()
>>> a.TrainNet()
0.61932256419312537
>>> a.TrainNet()
0.52224738939510462
>>> a.Save('x.xx')
>>> a = 0
>>> with open('x.xx','rb') as xfile:
a = pickle.load(xfile)
>>> a.TrainNet()
0.46746910805434289
>>> a.TrainNet()
0.46746910805434289
>>> a.TrainNet()
0.46746910805434289
>>> a.TrainNet()
0.46746910805434289
>>> a.TrainNet()
0.46746910805434289
>>> a.TrainNet()
0.46746910805434289
>>>
и как мы видим после загрузки функция тренировки сети не работает. Почему??