TensorFlow 中的加载模型给出了与原始模型不同的结果

时间:2021-01-29 14:23:20

标签: python python-3.x tensorflow tensorflow2.0

我在 Python 中使用 TensorFlow 库。创建模型并保存后,如果我加载整个模型,会得到不一致的结果。

首先,我使用的是 TensorFlow 2.3.0 版。

我使用的代码如下:

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Flatten, Conv2D, MaxPooling2D
from tensorflow.keras.callbacks import ModelCheckpoint

def get_new_model():
    model = Sequential([
        Conv2D(filters=16, input_shape=(32, 32, 3), kernel_size=(3, 3), activation='relu', name='conv_1'),
        Conv2D(filters=8, kernel_size=(3, 3), activation='relu', name='conv_2'),
        MaxPooling2D(pool_size=(4, 4), name='pool_1'),
        Flatten(name='flatten'),
        Dense(units=32, activation='relu', name='dense_1'),
        Dense(units=10, activation='softmax', name='dense_2')
    ])
    model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
    return model

checkpoint_path = 'model_checkpoints'
checkpoint = ModelCheckpoint(filepath=checkpoint_path, save_weights_only=False, frequency='epoch', verbose=1)

model = get_new_model()
model.fit(x_train, y_train, epochs=3, callbacks=[checkpoint])

直到这里没问题,我创建模型,编译它并用一些数据训练它。我还使用 ModelCheckpoint 来保存模型。 当我尝试以下操作时出现问题

from tensorflow.keras.models import load_model

model2 = load_model(checkpoint_path)

model.evaluate(x_test, y_test)
model2.evaluate(x_test, y_test)

然后,第一个评估返回 0.477 的准确度,而另一个返回 0.128 的准确度,这本质上是一个随机选择。 这里有什么问题?这两个模型应该是相同的,实际上,它们给出的损失函数值相同,最多保留 16 位小数。

0 个答案:

没有答案
相关问题