【问题标题】:Keras IndexError: indices are out-of-boundsKeras IndexError:索引超出范围
【发布时间】:2016-06-28 09:29:30
【问题描述】:

我是 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

有人知道为什么会这样吗?我能够很好地运行其他模型

【问题讨论】:

  • trainx 和 trainy 应该是 numpy 数组

标签: neural-network theano keras


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      来自official Keras Page:

      Keras 模型在输入数据和标签的 Numpy 数组上进行训练。为了训练模型,您通常会使用 fit 函数。

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

      x_train = np.array(x_train)
      

      【讨论】:

      • 这样,模型认为像 Urls 这样的字符串值是浮点数:“ValueError: could not convert string to float:”Clothing Girls' Clothing Baby Girls' Clothing Dresses””
      猜你喜欢
      • 1970-01-01
      • 2021-12-04
      • 1970-01-01
      • 1970-01-01
      • 2019-11-25
      • 2020-12-13
      • 1970-01-01
      • 1970-01-01
      • 2013-07-28
      相关资源
      最近更新 更多