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



我正在使用 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)

最新更新