2

我创建了一个简单的 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')

这是预期的行为吗?

4

1 回答 1

1

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

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

from keras.backend import manual_variable_initialization
manual_variable_initialization(True)

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

于 2021-02-24T04:37:18.153 回答