我正在使用 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((,但它不起作用。是因为我使用的是自定义生成器吗?在这种情况下,我该如何评估模型?
我认为这条线是问题所在
x, y = zip(*(testgenerator[i] for i in range(len(testgenerator))))
因为您在生成器对象上调用len
。 解决方案可能是,如果您只是创建一些计数器,递增它并将其用作索引testgenerator[i]
我解决这个问题的方法是使用不同的方法。在这种情况下,我不需要提取 x,y 的值:
loss, acc = Bi_LSTM.evaluate_generator(testgenerator, batch_size=9)