我创建了一个简单的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')这是一种预期的行为吗?
发布于 2021-02-24 12:37:18
这是因为您保存Keras模型的方式。这是一个常见的问题。如果您未手动指定tf.global_variables_initializer,则Keras将运行它,因此这意味着当您尝试保存模型时,它将首先重新初始化所有权重。
为了防止出现这种情况,在Keras中,可以在训练模型之前在Tensorflow后端设置_MANUAL_VAR_INIT标志:
from keras.backend import manual_variable_initialization
manual_variable_initialization(True)这样做之后,使用Neo和您的Keras模型的结果应该是一致的。
https://stackoverflow.com/questions/66330493
复制相似问题