2017-02-10 26 views
0

Я искал всюду по всем веб-сайтам для этого, ничего не нашел, кроме «удаленной» записи при переполнении стека.Pybrain - SequentialDataSet с использованием Backprop-тренера дает ошибку индексов среза

Проблема заключается в следующем: Каждые примеры, учебники по PyBrain LSTM + SequencialDataSet givwa мне следующую ошибку:

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

Из моих предыдущих поисков, это, кажется, проблема, где, после определенной версии Python, целочисленных операций возвращается плавать вместо целых чисел

Н но, похоже, он работает со всеми, кто использует 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

Хорошо, я только что пошел с вашими версиями в virtualenv и появилась ошибка. Что-то изменилось в версиях, которые у вас есть, и что у меня есть. Одним из ответов было бы использовать virtualenv с более поздним python и модулями или обновить ваш. Я не врывался в то, что именно вызывает это, и где разница еще. Надеюсь, что это поможет, –

ответ

0

Нашли его, разница в пирамине, это зафиксировано в моей настройке:

pip uninstall pybrain 
pip install pybrain 

Попробуйте,

+0

МММ такая же ошибка на моей стороне ... не имеет значения, я настрою свой питон, чтобы он имел ту же версию, что и у вас, я дам вам знать, работает ли это! –

+0

Работал, спасибо большое! –

 Смежные вопросы

  • Нет связанных вопросов^_^