评估模型时Keras自定义生成器问题

时间:2018-10-16 07:10:22

标签: python tensorflow keras generator

我正在使用Keras训练CNN LSTM模型,训练完成后,我试图像微调CNN一样在测试数据上评估模型,但是这次出现了错误。

培训结束后,我尝试按照以下代码对我的测试集进行评估:

x, y = zip(*(testgenerator[i] for i in range(len(testgenerator))))

x_test, y_test = np.vstack(x), np.vstack(y)

loss, acc = Bi_LSTM.evaluate(x_test, y_test, batch_size=9)

print("Accuracy: " ,acc)
print("Loss: ", loss)

我之前曾使用此代码来评估我的微调模型,但没有问题,但是现在出现以下错误:

TypeError: object of type 'generator' has no len()

我在网上尝试了几种解决方案,例如使用len(list(generator)),但没有用。是因为我使用的是自定义生成器?在这种情况下,我该如何评估模型?

2 个答案:

答案 0 :(得分:1)

我认为这是问题所在

x, y = zip(*(testgenerator[i] for i in range(len(testgenerator))))

因为您在生成器对象上调用len。 解决方案可能是,如果您只是创建一些计数器,将其递增并将其用作testgenerator[i]

中的索引

答案 1 :(得分:0)

我解决此问题的方法是使用其他方法。在这种情况下,我不需要提取x,y的值:

loss, acc = Bi_LSTM.evaluate_generator(testgenerator, batch_size=9)