【问题标题】:Keras Predictions and Sagemaker Predictions are differentKeras 预测和 Sagemaker 预测不同
【发布时间】:2021-10-06 11:21:02
【问题描述】:

我正在尝试使用 amazon sagemaker 部署 tensorflow keras 模型。过程成功完成,但是当直接使用 keras 进行预测和调用 sagemaker 端点进行预测时,我得到了不同的预测结果。

我使用these 步骤将模型部署到 sagemaker。

检查以下示例。

data = np.random.randn(1, 150, 150, 3)

# predict using amazon sagemaker
sagemaker_predict = uncompiled_predictor.predict(data)
print(sagemaker_predict)

#predict same using keras
val = model.predict(data)
print(val)


>>{'predictions': [[0.491645753]]}
[[0.]]

这是应该发生的事情吗?据我所知,它应该是相同的。由于某种原因,数据被损坏或 sagemaker 权重被重新初始化。有什么想法吗?

【问题讨论】:

    标签: python tensorflow machine-learning keras amazon-sagemaker


    【解决方案1】:

    不应该发生。
    如果您将模型直接部署到 TensorFlow 服务(这是 SageMaker 推理容器包装的内容),看看您会得到什么。
    为了更快地进行实验,您可以使用 SageMaker inference container in local mode,,这样您就可以在几秒钟内启动/停止 endopint。

    【讨论】:

      【解决方案2】:

      终于找到了解决办法。 .h5 (HDF5) 权重文件似乎有问题,由于某种原因,sagemaker 似乎没有从 .h5 中提取权重。因此将权重文件更改为 TensorFlow SavedModel 格式

      至于tensorflow keras 保存并序列化documentation

      您可以使用两种格式将整个模型保存到磁盘:TensorFlow SavedModel 格式和较旧的 Keras H5 格式。推荐的格式是 SavedModel。当你使用 model.save() 时它是默认的。

      您可以通过以下方式切换到 H5 格式:

      将 save_format='h5' 传递给 save()。 将一个以 .h5 或 .keras 结尾的文件名传递给 save()

      所以不要将权重保存为

      model.save("my_model.h5")
      

      另存为

      model.save("my_model")
      

      并加载与

      相同的权重
      keras.models.load_model("my_model")
      

      这会将您的文件保存为 TensorFlow SavedModel 格式,您可以按照上述文档中的说明加载并部署到 sagemaker。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-06-03
        • 2019-09-04
        • 2019-03-02
        • 1970-01-01
        • 1970-01-01
        • 2018-11-03
        • 2020-09-07
        • 2021-08-25
        相关资源
        最近更新 更多