【问题标题】:Using Keras fit_generator gives an error of wrong shape使用 Keras fit_generator 会出现形状错误的错误
【发布时间】:2018-09-23 14:39:07
【问题描述】:

我在 fit_generator 上遇到错误。我的生成器返回以下内容:

yield(row.values, label)

例如,使用它:

myg = generate_array()
for i in myg:
    print((i[0].shape))
    print(i)
    break

(9008,)
(array([0.116516, 0.22419 , 0.03373 , ..., 0.      , 0.      , 0.      ]), 0)

但是下面会抛出异常:

model = Sequential()
model.add(Dense(84, activation='relu', input_dim=9008))

ValueError: Error when checking input: expected dense_1_input to have shape 
(9008,) but got array with shape (1,)

有什么想法吗?

【问题讨论】:

  • 你应该做一个自包含的例子来说明问题,因为根据你显示的代码,我们无法猜测问题是什么。
  • 数据生成器需要给出一批数据,而不是单个样本。参见例如:stanford.edu/~shervine/blog/…
  • @Kota Mori - 谢谢!成功了。

标签: python python-3.x tensorflow keras keras-layer


【解决方案1】:

正如 Kota Mori 所建议的:数据生成器需要提供一批数据,而不是单个样本。参见例如:https://stanford.edu/~shervine/blog/keras-how-to-generate-data-on-the-fly

由于我想要随机梯度下降(批量大小为 1),因此以下代码解决了该问题:

def generate_array():
   while True:
    X = np.empty((1, 9008))
    y = np.empty((1), dtype=int)
    # Some processing
    X[0] = row
    y[0] = label
    yield(X,y)

【讨论】:

    猜你喜欢
    • 2018-10-18
    • 1970-01-01
    • 2017-09-09
    • 2017-03-01
    • 1970-01-01
    • 2019-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多