keras `fit_generator()` 的形状问题

Shape issue with keras `fit_generator()`

我在 keras 的 fit_generator 函数中使用的自定义生成器函数返回的 numpy 数组的形状有一个看似简单的问题。

生成器函数类似这样:

def data_generator(full_data, encoder):
    for s in full_data:
        in1_X = encoder.encode(s[:,0])
        in2_X = encoder.encode(s[:,1])
        out1_y = encoder.encode(s[:,2])
        out2_y = encoder.encode(s[:,3])
        X = [in1_X, in2_X]
        y = [out1_y, out2_y]
        yield (X,y)

我可以通过使用 for 循环并打印形状来获得从 in1_X 返回的形状,这很简单 returns (60,)

然而,当使用 fit_generator() 函数调用它时,它失败了:

train_data_gen = data_generator(full_data, encoder)


main_in = Input(shape=(seq_len,), name='main_input')

# ...
# define model
# ...

joint_model.fit_generator(train_data_gen, steps_per_epoch=2000, epochs=2)

输出是这样的:

Error when checking input: 
expected main_input to have shape (None, 60) but got array with shape (60, 1)

如何才能不将 numpy 数组从形状 (60,) 更改为形状 (60, 1)?还有其他人遇到过这个问题吗?

我们找到了对这个问题的回应。请查看以下 PR 中的解释和评论:https://github.com/fchollet/keras/issues/4641 提供一个二维数组为我们解决了这个问题。