11

私は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

エラー:

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

なぜこれが起こっているのか誰にも分かりますか?他のモデルを問題なく実行できます

4

3 に答える 3

34

コメントからの回答 - trainx と trainy は numpy 配列である必要があります。メソッドを使用して、データ フレームを numpy 配列に変換できますas_matrix()。私もこの問題に直面しました。Keras が意味のあるエラー メッセージを表示しないのは奇妙です。

于 2016-04-22T15:53:27.610 に答える
6

auto-sklearn と pandas データフレームの同じ問題の解決策を探してここに来ました。解決策は、X データフレームを X.values として渡すことです。つまり、fit(X.values,y)

于 2016-10-03T18:01:07.703 に答える
5

Kerasの公式ページから:

Keras モデルは、入力データとラベルの Numpy 配列でトレーニングされます。モデルのトレーニングには、通常、fit 関数を使用します。

pandas データフレームを numpy 配列に変換するには、np.array(dataframe). 例えば:

x_train = np.array(x_train)
于 2017-02-02T18:25:11.527 に答える