我正在尝试使用 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 权重被重新初始化。有什么想法吗?
答案 0 :(得分:0)
不应该发生。
如果您将模型直接部署到 TensorFlow 服务(这是 SageMaker 推理容器包装的内容),看看您会得到什么。
为了更快地进行实验,您可以使用 SageMaker inference container in local mode,,这样您就可以在几秒钟内启动/停止内科检查。
答案 1 :(得分:0)
终于找到了解决办法。 .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。