使用带有fit_generator的Keras Functional API时的输入形状错误

时间:2018-05-08 19:11:04

标签: python-3.x keras generator

我使用Keras Functional API构建了一个模型,并且在列车集上调用fit时工作正常。现在我决定更改模型以使用我的生成器

def data_generator():
    while 1:
        for i in range(len(sequences1)):
            yield ([sequences1[i], sequences2[i]], trainLabels[i])

这是来自我的数据集

的示例数据
sample = next(data_generator())
print(sample)
print(sample[0][0].shape)
# output:
# ([array([ 0,  0,  0, ..., 10, 14, 16], dtype=int32), array([ 0,  0,  0, ..., 19,  1,  4], dtype=int32)], 1)
# (34350,)

这是我的模型摘要(只是前两部分)

__________________________________________________________________________________________________
Layer (type)                    Output Shape         Param #     Connected to                     
==================================================================================================
input_1 (InputLayer)            (None, 34350)        0                                            
__________________________________________________________________________________________________
input_2 (InputLayer)            (None, 34350)        0      

但是当我尝试使用此代码来适应我的模型时

model.fit_generator(data_generator(), epochs=15, steps_per_epoch=64)

我收到此错误

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

我该如何解决?

1 个答案:

答案 0 :(得分:1)

问题是生成器必须逐批生成数据。换句话说,sample[0][0].shape应为(BATCH_SIZE, 34350),同样适用于第二个序列和标签。