Keras IndexError: индексы вне пределов
Я новичок в Keras и im, пытаясь сделать Binary 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
Ошибка:
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
Кто-нибудь знает, почему это происходит? Im способен запускать другие модели просто отлично
Ответы
Ответ 1
Ответ от комментария - trainx и trainy должны быть массивами numpy. Вы можете преобразовать фрейм данных в массив numpy с помощью метода as_matrix()
. Я также столкнулся с этой проблемой. Странно, что Keras не дает значимого сообщения об ошибке.
Ответ 2
Я пришел сюда, чтобы найти то же разрешение проблемы для авто-sklearn и pandas dataframe. Решение заключается в передаче кадра данных X как X.values. То есть Fit (X.values, у)
Ответ 3
Из официальная страница Keras:
Модели Keras обучаются массивам Numpy входных данных и меток. Для обучения модели обычно используется функция подгонки.
Чтобы преобразовать фреймворк pandas в массив numpy, вы можете использовать np.array(dataframe). Например: x_train = np.array(x_train).