2017-02-10 22 views
0

我搜索了整個網絡間的這一個,沒有發現任何東西,除了在堆棧溢出「刪除」的職位。Pybrain - 使用Backprop訓練器的SequentialDataSet給出了一個分區索引錯誤

的問題如下: 每個實例,PyBrain LSTM + SequencialDataSet教程givwa我下面的錯誤:

TypeError: slice indices must be integers or None or have an __index__ method 

從我以前的搜索,這似乎是一個問題,即,在一定版本的python之後,整數運算返回float而不是整數

H但是,它似乎與其他人一樣使用像我這樣的Python 2.x。 有什麼想法?

代碼(不是我的,從另一個計算器交了):

from pybrain.tools.shortcuts import buildNetwork 
from pybrain.supervised.trainers import BackpropTrainer 
from pybrain.datasets import SequentialDataSet 
from pybrain.structure import SigmoidLayer, LinearLayer 
from pybrain.structure import LSTMLayer 

import itertools 
import numpy as np 

INPUTS = 5 
OUTPUTS = 1 
HIDDEN = 40 

net = buildNetwork(INPUTS, HIDDEN, OUTPUTS, hiddenclass=LSTMLayer,  outclass=LinearLayer, recurrent=True, bias=True) 

ds = SequentialDataSet(INPUTS, OUTPUTS) 
ds.addSample([0,1,2,3,4],[5]) 
ds.addSample([5,6,7,8,9],[10]) 
ds.addSample([10,11,12,13,14],[15]) 
ds.addSample([16,17,18,19,20],[21]) 

net.randomize() 

trainer = BackpropTrainer(net, ds) 

for _ in range(1000): 
    print trainer.train() 

x=net.activate([0,1,2,3,4]) 
print x 

這給了我這個錯誤:

File "try3.py", line 27, in <module> 
print trainer.train() 
File "/usr/local/lib/python2.7/dist-packages/PyBrain-0.3.3-py2.7.egg/pybrain/supervised/trainers/backprop.py", line 57, in train 
for seq in self.ds._provideSequences(): 
File "/usr/local/lib/python2.7/dist-packages/PyBrain-0.3.3-py2.7.egg/pybrain/datasets/sequential.py", line 173, in _provideSequences 
return iter(map(list, iter(self))) 
File "/usr/local/lib/python2.7/dist-packages/PyBrain-0.3.3-py2.7.egg/pybrain/datasets/sequential.py", line 169, in __iter__ 
yield self.getSequenceIterator(i) 
File "/usr/local/lib/python2.7/dist-packages/PyBrain-0.3.3-py2.7.egg/pybrain/datasets/sequential.py", line 63, in getSequenceIterator 
return zip(*self.getSequence(index)) 
File "/usr/local/lib/python2.7/dist-packages/PyBrain-0.3.3-py2.7.egg/pybrain/datasets/sequential.py", line 56, in getSequence 
return [self._getSequenceField(index, l) for l in self.link] 
File "/usr/local/lib/python2.7/dist-packages/PyBrain-0.3.3-py2.7.egg/pybrain/datasets/sequential.py", line 45, in _getSequenceField 
return self.getField(field)[seq[index]:] 
TypeError: slice indices must be integers or None or have an __index__ method 

使用:

Python 2.7.6 (default, Oct 26 2016, 20:30:19) 
[GCC 4.8.4] on linux2 
+0

它適用於Python 2.7.9,沒有問題。我的關鍵模塊是:Python 2.7.9,scipy 0.14.0和pybrain 0.3。看看你有什麼版本 –

+0

當然可以:Python 2.7.6,scipy 0.18.1,PyBrain-0.3.3 –

+1

好的,我剛剛在virtualenv中使用了你的版本,並且出現了錯誤。你擁有的版本和我擁有的版本有所變化。一個答案是使用virtualenv與更高版本的Python和模塊或升級你的。我還沒有深究究竟是什麼導致了這種情況,還有哪些地方存在差異。希望這有助於, –

回答

0

發現了它,不同的是在pybrain中,這個固定在我的設置中:

pip uninstall pybrain 
pip install pybrain 

試試看,

+0

MMM同樣的錯誤在我身邊...無所謂,我會設置我的Python,所以它有與你的相同版本,我會讓你知道它是否工作! –

+0

工作過,非常感謝! –

相關問題