我使用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,)
我该如何解决?
答案 0 :(得分:1)
问题是生成器必须逐批生成数据。换句话说,sample[0][0].shape
应为(BATCH_SIZE, 34350)
,同样适用于第二个序列和标签。