私はKerasを初めて使用し、データセットに対して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
なぜこれが起こっているのか誰かが知っていますか?他のモデルを問題なく実行できます
コメントからの回答-trainxとtrainyはnumpy配列である必要があります。 as_matrix()
メソッドを使用して、データフレームをnumpy配列に変換できます。私もこの問題に直面しました。 Kerasが意味のあるエラーメッセージを表示しないのは奇妙です。
Auto-sklearnとpandasデータフレームの同じ問題解決策を探してここに来ました。解決策はXデータフレームをX.valuesとして渡すことです。つまりfit(X.values、y)
公式Kerasページ: から
Kerasモデルは、入力データとラベルのNumpy配列でトレーニングされます。モデルのトレーニングには、通常、近似関数を使用します。
pandasデータフレームをnumpy配列に変換するには、np.array(dataframe)
を使用できます。例:
x_train = np.array(x_train)