【问题标题】:Sagemaker Neo compiled model is giving slighthly different results than the actual keras modelSagemaker Neo 编译模型给出的结果与实际的 keras 模型略有不同
【发布时间】:2021-02-28 06:01:21
【问题描述】:

我创建了一个简单的 Keras 回归模型并对其进行了训练,然后将其保存为 h5 格式。 然后为了在 greengrass 上部署,我使用 neo 编译了这个模型,然后部署它并使用 lamda 函数进行推理。最终预测结果与实际keras模型的预测结果略有不同。

型号:

import pandas as pd
from keras.models import Sequential
from keras.layers import *

model = Sequential()
model.add(Dense(50, input_dim=9, activation='relu'))
model.add(Dense(100, activation='relu'))
model.add(Dense(50, activation='relu'))
model.add(Dense(1, activation='linear'))
model.compile(loss='mean_squared_error', optimizer='adam')

这是预期的行为吗?

【问题讨论】:

    标签: amazon-web-services machine-learning keras amazon-sagemaker greengrass


    【解决方案1】:

    这是因为您保存 Keras 模型的方式。这是一个普遍的问题。如果您未手动指定 Keras 会运行 tf.global_variables_initializer,因此这意味着当您尝试保存模型时,它将首先重新初始化所有权重。

    为了防止这种情况,在 Keras 中,您可以在训练模型之前在 Tensorflow 后端设置 _MANUAL_VAR_INIT 标志:

    from keras.backend import manual_variable_initialization
    manual_variable_initialization(True)
    

    完成此操作后,使用 Neo 和您的 Keras 模型的结果应该一致。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-06
      • 2017-08-08
      • 1970-01-01
      • 2021-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-30
      相关资源
      最近更新 更多