是啥让我的模型在笔记本电脑和 colab 上运行时预测错误值?

Posted

技术标签:

【中文标题】是啥让我的模型在笔记本电脑和 colab 上运行时预测错误值?【英文标题】:What is making my model predicting the wrong value when running on my laptop and colab?是什么让我的模型在笔记本电脑和 colab 上运行时预测错误值? 【发布时间】:2022-01-19 06:06:55 【问题描述】:

我已将 TF 模型导出为 .h5 格式,以便将其用于我的项目。在 Colab 上运行和测试时,它可以完美预测,但是当我尝试在我的机器(笔记本电脑)中预测 .h5 格式模型时,它没有预测到正确的模型,因此它不像以前在 Colab 中那样工作。我试图在网上浏览,但似乎没有找到答案或线索。有谁知道问题出在哪里?

示例 输入图片:golden_retriever的狗类型

(COLAB) -> 预测golden_retriever(正确)

model = tf.keras.models.load_model("model_mac.h5", custom_objects="KerasLayer": hub.KerasLayer)
custom_images_paths = ["golde.jpeg"]
custom_data = create_data_batches(custom_images_paths, test_data=True)
custom_preds = model.predict(custom_data)
custom_pred_labels = [get_pred_label(custom_preds[i]) for i in range(len(custom_preds))]

(我的机器/笔记本电脑) -> 预测 norwegian_elkhound(其他看起来不像 golden_retriever 的东西。(错误)

model = tf.keras.models.load_model("model_mac.h5", custom_objects "KerasLayer":hub.KerasLayer)

img = "golde.jpeg"

custom_data = create_data_batches([img], test_data=True)
custom_preds = model.predict(custom_data)
custom_pred_labels = [get_pred_label(custom_preds[i]) for i in range(len(custom_preds))]

提前致谢。

【问题讨论】:

【参考方案1】:

我会检查模型预测代码每一步的输出。

当您在数据集的测试拆分上调用 model.evaluate() 时,您是否能够验证您的模型获得相同的结果?

这是我首先要做的事情之一。

否则,您可能需要查看文档中处理保存到 .h5 的部分:https://www.tensorflow.org/tutorials/keras/save_and_load#hdf5_format

请参阅“保存自定义对象”部分,您是否在本地计算机上定义了 hub.KerasLayer?也许这与它有关。

【讨论】:

您好丹尼尔,感谢您的帮助。我已经记录了预测自定义图像之前和之后的每一个操作。我还重新评估了测试数据集上的模型,没有任何问题发生,模型看起来很好,准确性很好,我还检查了您提供的 .h5 格式文档,它仍然预测错误的输出。我尝试使用 SavedModel 格式,但它仍然预测错误的输出。

以上是关于是啥让我的模型在笔记本电脑和 colab 上运行时预测错误值?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 google colab 让 Windows 10 笔记本电脑进入睡眠状态?

找出是啥让我在 torch7 中记忆犹新

Jupyter笔记本电脑上谷歌Colaboratory的IOPub错误

没有填充或边距:是啥让我的表格无法获得 100% 的宽度? & 为啥当鼠标悬停在可滚动的 el 上时滚动条不随滚轮滚动?

如何重新连接到 Google Colab 上正在进行的进程

使用 TPU 运行时在 Google Colab 上训练 Keras 模型时出错