2017-02-10 6 views
0

스택 오버플로에서 '삭제 된'게시물을 제외하고는 웹에서이 코드를 검색했습니다. 어디에 문제가 될 것 같다, 내 이전 검색에서Pybrain - Backprop 트레이너를 사용하는 SequentialDataSet에서 슬라이스 인덱스 오류가 발생했습니다.

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

: 모든 예제, PyBrain LSTM + SequencialDataSet 튜토리얼이 나에게 다음과 같은 오류를 givwa :

문제는이 다음이다 파이썬의 특정 버전 후, 정수 연산의 반환 대신 의 정수

H를 떠 그러나, 그것은 나 같은 파이썬 2.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 

사용 : 나에게이 오류 제공

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 

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

Ok, 가상 버전에서 사용중인 버전을 가지고 오류가 발생했습니다. 당신이 가지고있는 버전과 내가 가지고있는 버전이 바뀌 었습니다. 하나의 대답은 나중에 파이썬과 모듈을 사용하거나 당신을 업그레이드하는 virtualenv를 사용하는 것입니다. 나는 이것을 정확히 일으키고있는 것과 그 차이가 아직 무엇인지를 파헤 치지 않았다. 희망이 도움이 –

답변

0

이 발견을, 차이점은 pybrain에 있으며, 이것은 내 설정에서 해결했습니다 :

pip uninstall pybrain 
pip install pybrain 

시도해보십시오.

+0

내 측면에 MMM 같은 오류가 ... 문제가되지 않는다면, 파이썬을 설치해서 네가 가진 것과 같은 버전으로 만들어 주겠다. –

+0

일해 줘서 고마워! –