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

如何正确保存并加载带指定词汇表TextVectorization层的TensorFlow模型

问题原因

你遇到的报错核心原因是TextVectorization层初始化时传入的是词汇文件路径VOCAB_PATH,而非直接传入词汇列表。这种情况下,层内部仅会存储文件路径字符串,不会将词汇表内容序列化绑定到模型中,加载模型时会尝试从原路径读取词汇文件,一旦环境路径变化、文件缺失就会触发哈希表初始化失败的相关错误。另外你提供的模型代码中第二组LSTM层存在拼写错误:retrun_sequences应为return_sequences,需要先修正该问题再训练保存。

解决方案

方案一:将词汇表直接嵌入模型(推荐,无需额外携带词汇文件)

这个方案会把词汇表直接序列化到模型文件中,传输时仅需要传保存的模型文件夹即可开箱即用,操作步骤如下:

  • 第一步:提前读取词汇文件内容为列表
with open(VOCAB_PATH, 'r', encoding='utf-8') as f:
    vocab_list = [line.strip() for line in f if line.strip()]
  • 第二步:构建模型时向TextVectorization传入词汇列表而非文件路径
model = keras.Sequential()
model.add(keras.Input(shape=(), dtype=tf.string))
# 传入词汇列表,而非VOCAB_PATH
model.add(layers.TextVectorization(
    vocabulary=vocab_list, 
    output_sequence_length=SEQ_LENGTH
))
# 后续层和原有逻辑一致,注意修正LSTM的拼写错误
model.add(layers.Embedding(VOCAB_SIZE, SEQ_LENGTH))
model.add(layers.LSTM(SEQ_LENGTH, return_sequences=True))
model.add(layers.LSTM(SEQ_LENGTH, return_sequences=True))
model.add(layers.Dropout(0.2))
model.add(layers.Dense(SEQ_LENGTH, activation="relu"))
model.add(layers.Dense(SEQ_LENGTH, activation="relu"))
model.add(layers.Flatten())
model.add(layers.Dense(NUM_CLASSES, activation="softmax"))
  • 第三步:正常训练后保存模型即可
model.save(SAVE_PATH)
  • 加载测试:任意环境下直接加载即可使用,无需额外准备词汇文件
loaded_model = keras.models.load_model(SAVE_PATH)
# 直接传入字符串即可推理
loaded_model.predict(["测试输入文本"])

方案二:保留独立词汇文件的加载方案

如果你需要保留单独传输词汇文件的逻辑,可按以下步骤操作:

  • 传输时将模型文件夹和词汇文件放在同一目录
  • 加载模型时先手动初始化TextVectorization层,再加载权重:
# 新环境中先读取传入的词汇文件
with open(TRANSFERRED_VOCAB_PATH, 'r', encoding='utf-8') as f:
    vocab_list = [line.strip() for line in f if line.strip()]
# 先构建和训练时结构完全一致的模型
vectorize_layer = layers.TextVectorization(
    vocabulary=vocab_list, 
    output_sequence_length=SEQ_LENGTH
)
model = keras.Sequential()
model.add(keras.Input(shape=(), dtype=tf.string))
model.add(vectorize_layer)
# 补全剩余层结构,和训练时完全一致
...
# 加载权重
model.load_weights(SAVE_PATH)

内容的提问来源于stack exchange,提问作者mlinke-ai

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 04:45:02