如何修复TensorFlow预测过程中出现的TypeError错误?
问题分析与解决
兄弟,你遇到的这个类型错误和数据类型没关系,问题出在你打印预测结果的方式上!
错误根源
model.predict(test_data)返回的是一个numpy数组(对应每个样本的softmax概率分布),而你在代码里写了:
print("Prediction: " + model.predict(test_data))
Python不允许直接把字符串和numpy数组用+做拼接操作,这才触发了TypeError: ufunc 'add' did not contain a loop with signature matching types这个错误。
解决方案
你可以换几种正确的方式来打印预测结果:
1. 用逗号分隔字符串和数组(最简单)
Python会自动帮你处理不同类型的拼接:
prediction = model.predict(test_data) print("Prediction: ", prediction)
2. 使用f-string格式化输出
这种方式更清晰,可读性更强:
prediction = model.predict(test_data) print(f"Prediction: {prediction}")
3. 输出预测的类别(而不是概率分布)
因为你的最后一层是softmax,输出的是每个类别的概率,如果你想直接看模型预测的类别,可以用np.argmax取每个样本概率最大的索引:
import numpy as np predictions = model.predict(test_data) predicted_classes = np.argmax(predictions, axis=1) print("Predicted classes: ", predicted_classes)
补充说明
之前model.evaluate运行正常,是因为它返回的是两个单独的数值(测试损失和准确率),你把它们赋值给了变量,没有直接做字符串拼接操作,所以没触发错误。
内容的提问来源于stack exchange,提问作者Ian
相关产品推荐
相关产品推荐

