2016-03-13 49 views
11

我是Keras的新手,我試圖在數據集上進行Binary MLP,並且不斷收到索引超出界限,不知道爲什麼。Keras IndexError:指數超出界限

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 

錯誤:

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 

任何人都不會有爲什麼發生這種情況的任何想法?我能夠運行其他模型就好了

+3

trainx和trainy應該是numpy的陣列 –

回答

33

回答評論 - trainx和trainy應該是numpy數組。您可以使用as_matrix()方法將數據幀轉換爲numpy數組。我也面臨這個問題。奇怪的是Keras沒有給出有意義的錯誤信息。

5

我來到這裏尋找auto-sklearn和pandas數據框的相同問題解決方案。解決方案是將X數據幀作爲X.values傳遞。即配合(X.values,Y)

5

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.

要轉換大熊貓據幀到numpy的陣列可以使用np.array(數據幀)。例如:x_train = np.array(x_train)。

+0

有了這個,模型認爲喜歡的網址字符串值是彩車:「ValueError異常:無法將字符串轉換爲float:‘服裝女童服裝嬰兒女童服裝連衣裙’ 」 –