使用 Keras fit_generator 给出错误形状的错误

Using Keras fit_generator gives an error of wrong shape

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

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,)

有什么想法吗?

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

因为我想要一个随机梯度下降(批量大小是一个)下面的代码解决了这个问题:

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)