You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Keras模型跨会话保存与加载后精度大幅下降问题求助

解决跨会话加载Keras模型后精度骤降的问题

我之前也碰到过一模一样的情况——同会话内保存加载模型完全正常,但换个会话加载后精度直接跳水,看起来像个没训练过的模型。结合你的描述,咱们一步步来排查解决:

最可能的原因:数据预处理不一致

你提到两个模型的权重一致,但结果天差地别,90%的概率是你在会话2中使用的train_padded和训练时的输入数据不是同一个东西。

训练时你肯定用了Tokenizer把文本转换成序列,再做padding操作。如果会话2里没有复用训练时的那个Tokenizer,而是重新拟合了一个(哪怕用的是同一批训练数据),生成的词汇表可能会有细微差异,导致同样的文本转换成的序列完全不同,模型自然无法给出正确预测。

解决步骤:

  1. 训练时保存Tokenizer:
import pickle

# 假设你训练时用了这样的Tokenizer(根据你的实际代码调整)
tokenizer = tf.keras.preprocessing.text.Tokenizer(num_words=vocab_size)
tokenizer.fit_on_texts(train_texts)

# 保存Tokenizer到文件
with open('tokenizer.pkl', 'wb') as f:
    pickle.dump(tokenizer, f)
  1. 会话2中加载Tokenizer并复用:
import pickle

# 先加载训练时保存的Tokenizer
with open('tokenizer.pkl', 'rb') as f:
    tokenizer = pickle.load(f)

# 用同一个Tokenizer生成padded数据,确保和训练时的参数完全一致
train_sequences = tokenizer.texts_to_sequences(train_texts)
train_padded = tf.keras.preprocessing.sequence.pad_sequences(
    train_sequences, 
    maxlen=train_padded.shape[1],  # 和训练时的输入长度保持一致
    padding='post',  # 这里要和你训练时的padding参数完全匹配!
    truncating='post'
)

其他排查方向

如果上面的方法解决不了,再试试下面的步骤:

1. 改用SavedModel格式保存模型

H5格式有时候会丢失一些模型配置细节,改用TensorFlow的SavedModel格式更可靠:

  • 训练时保存:
model.save('my_trained_model')  # 会生成一个文件夹
  • 会话2中加载:
model = tf.keras.models.load_model('my_trained_model')

2. 确认推理时关闭训练模式

虽然Keras的evaluate默认是推理模式(自动禁用Dropout),但可以手动确保:

model.trainable = False
scores = model.evaluate(train_padded, training_labels, verbose=0)

3. 验证权重一致性

如果还是有问题,打印模型权重的统计值(比如均值)对比会话1保存前和会话2加载后:

  • 会话1保存前:
for layer in model.layers:
    weights = layer.get_weights()
    if weights:
        print(f"Layer {layer.name} weight mean: {weights[0].mean()}")
  • 会话2加载后:
for layer in model.layers:
    weights = layer.get_weights()
    if weights:
        print(f"Layer {layer.name} weight mean: {weights[0].mean()}")

如果权重均值完全一致,那绝对是输入数据的问题,回到第一步仔细检查预处理流程。

内容的提问来源于stack exchange,提问作者AmaniAli

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 04:12:45