我正在使用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)),但没有用。是因为我使用的是自定义生成器?在这种情况下,我该如何评估模型?
答案 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)