2016-03-13 29 views
11

Sono nuovo a Keras e sto cercando di fare MLP binario su un set di dati, e continuo a ottenere indici fuori limite senza alcuna idea del perché.Keras IndexError: gli indici sono fuori campo

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 

Errore:

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 

Qualcuno ha qualche idea del perché questo sta accadendo? Sono in grado di eseguire altri modelli semplicemente

+3

treno e treno dovrebbero essere array numpy –

risposta

33

Risposta dal commento - trainx e l'allenamento dovrebbero essere array numpy. È possibile convertire il frame di dati in array numpy usando il metodo as_matrix(). Ho anche affrontato questo problema. È strano che Keras non dia un messaggio di errore significativo.

5

Sono venuto qui cercando la stessa risoluzione del problema per il dataframe auto-sklearn e pandas. La soluzione è passare X dataframe come X.values. Cioè fit (X.values, y)

5

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

Per convertire un dataframe panda per NumPy matrice è possibile utilizzare np.array (dataframe). Ad esempio: x_train = np.array (x_train).

+0

Con questo modello si pensa che i valori di stringa come gli URL siano float: "ValoreErrore: impossibile convertire la stringa in float:" Abbigliamento per ragazze Abbigliamento per bambina " " –

Problemi correlati