Keras IndexError:索引超出范围

Wbo*_*boy 11 neural-network theano keras

我是Keras的新手,我试图在数据集上做二进制MLP,并且不知道为什么会让索引超出界限.

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
Run Code Online (Sandbox Code Playgroud)

错误:

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
Run Code Online (Sandbox Code Playgroud)

有谁知道为什么会这样?我能够运行其他模型就好了

Abh*_*mar 34

评论中的答案 - trainx和trainy应该是numpy数组.您可以使用as_matrix()方法将数据框转换为numpy数组.我也遇到过这个问题.奇怪的是Keras没有给出有意义的错误信息.


Die*_*ego 6

我来到这里寻找auto-sklearn和pandas数据帧的相同问题解决方案.解决方案是将X数据帧作为X.values传递.即适合(X.values,y)


DSG*_*DSG 5

来自官方Keras页面:

Keras模型在Numpy输入数据和标签阵列上进行训练.对于训练模型,通常使用拟合函数.

要将pandas数据帧转换为numpy数组,您可以使用np.array(dataframe).例如:

x_train = np.array(x_train)
Run Code Online (Sandbox Code Playgroud)