2016-03-13 17 views
11

Jestem nowy dla Keras i próbuję zrobić binarny MLP na zbiorze danych i utrzymywać indeksy poza granicami bez żadnego powodu.Kerry IndexError: indeksy są poza standardami

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 

Błąd:

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 

Czy ktoś ma jakiś pomysł, dlaczego tak się dzieje? Jestem w stanie uruchomić inne modele po prostu dobrze

+3

trainx i trainy powinny być numpy tablice –

Odpowiedz

33

Odpowiedź od komentarza - trainx i trainy powinny być numpy tablice. Możesz przekonwertować ramkę danych na tablicę numpy, używając metody as_matrix(). Zmierzyłem się także z tym problemem. To dziwne, że Keras nie podaje sensownego komunikatu o błędzie.

5

Przybyłem tutaj, szukając tego samego rozwiązania problemu dla ramek danych auto-sklearn i pandy. Rozwiązaniem jest przekazanie X-ramki danych jako X.values. To znaczy. Fit (X.values, Y)

5

Z 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.

Aby przekonwertować dataframe pandy do NumPy tablicę można wykorzystać np.array (dataframe). Na przykład: x_train = np.array (x_train).

+0

Dzięki temu, model uważa, że ​​ciąg wartości, takie jak adresy URL są pływaki „ValueError: nie można przekonwertować ciąg do pływaka:«Odzież odzież dziewczynek odzież Dziewczęce sukienki» ” –

Powiązane problemy