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を返しますしかし、それは私のようなPython 2.xを使ってみんなと一緒に働くようです。

(私ではない、別のstackoverflowのポストから取った)コード:

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

OK、私はちょうどvirtualenvであなたのバージョンで行って、エラーが表示されました。あなたが持っているバージョンと私が持っているバージョンで何か変わってきました。一つの答えは、後のpythonとモジュールを使ってvirtualenvを使うか、あなたのものをアップグレードすることです。私はこれを引き起こしているものと違いがどこにあるのかを掘り下げませんでした。これが助けてくれることを願って、 –

答えて

0

を、相違点はパイブレインで、これは私のセットアップでそれを修正した:

pip uninstall pybrain 
pip install pybrain 

試してみてください。

+0

MMM私の側に同じエラーがあります...それはあなたのものと同じバージョンを持っているように私は私のpythonをセットアップしません、それは動作するかどうかをお知らせします! –

+0

働いて、ありがとう! –

関連する問題