2016-03-13 39 views
11

Keras'a yeni geldim ve bir veri kümesinde İkili MLP yapmaya çalışıyorum ve nedenini bilmeden sınırların dışına çıkmaya devam ediyorum.Keras IndexError: endeksler sınır dışı

from keras.models import Sequential 
from keras.layers.core import Dense, Dropout, Activation 
from keras.optimizers import SGD 

model = Sequential() 
model.add(Dense(64, input_dim=20, init='uniform', activation='relu')) 
model.add(Dropout(0.5)) 
model.add(Dense(64, activation='relu')) 
model.add(Dropout(0.5)) 
model.add(Dense(1, activation='sigmoid')) 

model.compile(loss='binary_crossentropy', 
      optimizer='rmsprop') 
model.fit(trainx, trainy, nb_epoch=20, batch_size=16) # THROWS INDICES ERROR 

Hata:

model.fit(trainx, trainy, nb_epoch=20, batch_size=16) 

Epoch 1/20 
Traceback (most recent call last): 

    File "<ipython-input-6-c81bd7606eb0>", line 1, in <module> 
model.fit(trainx, trainy, nb_epoch=20, batch_size=16) 

    File "C:\Users\Thiru\Anaconda3\lib\site-packages\keras\models.py", line 646, in fit 
shuffle=shuffle, metrics=metrics) 

    File "C:\Users\Thiru\Anaconda3\lib\site-packages\keras\models.py", line 271, in _fit 
ins_batch = slice_X(ins, batch_ids) 

    File "C:\Users\Thiru\Anaconda3\lib\site-packages\keras\models.py", line 65, in slice_X 
return [x[start] for x in X] 

    File "C:\Users\Thiru\Anaconda3\lib\site-packages\keras\models.py", line 65, in <listcomp> 
return [x[start] for x in X] 

    File "C:\Users\Thiru\Anaconda3\lib\site-packages\pandas\core\frame.py", line 1963, in __getitem__ 
return self._getitem_array(key) 

    File "C:\Users\Thiru\Anaconda3\lib\site-packages\pandas\core\frame.py", line 2008, in _getitem_array 
return self.take(indexer, axis=1, convert=True) 

    File "C:\Users\Thiru\Anaconda3\lib\site-packages\pandas\core\generic.py", line 1371, in take 
convert=True, verify=True) 

    File "C:\Users\Thiru\Anaconda3\lib\site-packages\pandas\core\internals.py", line 3619, in take 
indexer = maybe_convert_indices(indexer, n) 

    File "C:\Users\Thiru\Anaconda3\lib\site-packages\pandas\core\indexing.py", line 1750, in maybe_convert_indices 
raise IndexError("indices are out-of-bounds") 

IndexError: indices are out-of-bounds 

herkes bu neden oluyor bir fikri var mı? Sadece diğer modelleri çalıştırabildim

+3

trainx ve trainy numpy diziler Bununla –

cevap

33

Yorumdan cevap - trainx ve trainy numpy dizileri olmalıdır. Veri çerçevesini as_matrix() yöntemini kullanarak numpy dizisine dönüştürebilirsiniz. Ben de bu sorunu yaşadım. Keras'ın anlamlı bir hata mesajı vermemesi garip.

5

Buraya otomatik sklearn ve pandalar veri çerçevesi için aynı sorun çözümünü aramaya geldim. Çözüm, X veri çerçevesini X.values ​​olarak geçirmektir. Yani fit (X.values, y) official Keras Page:

Keras models are trained on Numpy arrays of input data and labels. For training a model, you will typically use the fit function.

itibaren

5

sen np.array kullanabilirsiniz dizisi (dataframe) numpy bir pandalar dataframe dönüştürün. Örneğin: x_train = np.array (x_train).

+0

olmalı, model Url'ler gibi bu dize değerleri yüzer olduğunu düşünüyor: "ValueError: yüzer dizeyi dönüştürmek olamazdı: '' " Giyim Kız Giyim Bebek Kız Giyim Elbise –