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

如何加载ktrain训练的预训练BERT模型?加载报错求助

Ktrain加载BERT文本分类模型报错问题

用ktrain训练BERT文本分类模型并完成保存,训练时运行正常,保存predictor后生成包含tf_model.h5和tf_model.preproc的bert_model文件夹,但加载该predictor时出现报错。

训练及保存代码

y_train = [encoding[x] for x in y_train]
y_test = [encoding[x] for x in y_test]
(x_train,  y_train), (x_test, y_test), preproc = text.texts_from_array(x_train=X_train, y_train=y_train,
                                                                       x_test=X_test, y_test=y_test,
                                                                       class_names=class_names,
                                                                       preprocess_mode='bert',
                                                                       maxlen=350,
                                                                       max_features=35000)

model = text.text_classifier(
    'bert', train_data=(x_train, y_train), preproc=preproc)
learner = ktrain.get_learner(model, train_data=(x_train, y_train),
                             val_data=(x_test, y_test),
                             batch_size=6)
learner.fit_onecycle(2e-5, 3)
learner.validate(val_data=(x_test, y_test), class_names=class_names)
predictor = ktrain.get_predictor(learner.model, preproc)
predictor.get_classes()

import time
message = 'she left me while i was waiting for her and she isnt herself '

start_time = time.time()
prediction = predictor.predict(message)

print('predicted: {} ({:.2f})'.format(prediction, (time.time() - start_time)))
predictor.save("models/bert_model")

加载代码

from keras.models import load_model
import ktrain
from ktrain import text
import time

message = 'she left me while i was waiting for her and she isnt herself '
model_path = "/home/priyanshi/Desktop/folder/models/bert_model/"

predictor = ktrain.load_predictor(model_path)

start_time = time.time()
prediction = predictor.predict(message)

print('predicted: {} ({:.2f} seconds)'.format(
    prediction, (time.time() - start_time)))

报错信息

python -u "/home/priyanshi/Desktop/folder/test2.py"
2024-06-02 00:59:18.984734: I external/local_tsl/tsl/cuda/cudart_stub.cc:32] Could not find cuda drivers on your machine, GPU will not be used.
2024-06-02 00:59:18.987632: I external/local_tsl/tsl/cuda/cudart_stub.cc:32] Could not find cuda drivers on your machine, GPU will not be used.
2024-06-02 00:59:19.031606: I tensorflow/core/platform/cpu_feature_guard.cc:210] This TensorFlow binary is optimized to use available CPU instructions in performance-critical operations.
To enable the following instructions: AVX2 FMA, in other operations, rebuild TensorFlow with the appropriate compiler flags.
2024-06-02 00:59:19.734612: W tensorflow/compiler/tf2tensorrt/utils/py_utils.cc:38] TF-TRT Warning: Could not find TensorRT
Call to keras.models.load_model failed. Try manually invoking this function to investigate error and report issue if necessary.
Traceback (most recent call last):
File "/home/priyanshi/.local/lib/python3.10/site-packages/ktrain/core.py", line 2048, in _load_model
model = keras.models.load_model(
File "/home/priyanshi/.local/lib/python3.10/site-packages/tf_keras/src/saving/saving_api.py", line 262, in load_model
return legacy_sm_saving_lib.load_model(
File "/home/priyanshi/.local/lib/python3.10/site-packages/tf_keras/src/utils/traceback_utils.py", line 70, in error_handler
raise e.with_traceback(filtered_tb) from None
File "/home/priyanshi/.local/lib/python3.10/site-packages/tensorflow/python/saved_model/loader_impl.py", line 119, in parse_saved_model
raise IOError(
OSError: SavedModel file does not exist at: /home/priyanshi/Desktop/folder/models/bert_model//{saved_model.pbtxt|saved_model.pb}

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/home/priyanshi/Desktop/folder/test2.py", line 13, in 
predictor = ktrain.load_predictor(model_path)
File "/home/priyanshi/.local/lib/python3.10/site-packages/ktrain/core.py", line 1848, in load_predictor
model = _load_model(fpath, preproc=preproc, custom_objects=custom_objects)
File "/home/priyanshi/.local/lib/python3.10/site-packages/ktrain/core.py", line 2055, in _load_model
raise Exception("Error detected: %s" % (e))
Exception: Error detected: SavedModel file does not exist at: /home/priyanshi/Desktop/folder/models/bert_model//{saved_model.pbtxt|saved_model.pb}

解决方法

  • 指定模型文件名:ktrain.load_predictor默认会寻找SavedModel格式文件,而你保存的是H5格式,需要手动指定模型文件名:
    predictor = ktrain.load_predictor(model_path, model_filename='tf_model.h5')
    
  • 统一环境版本:确保训练和加载环境的ktrain、TensorFlow版本完全一致,版本不兼容可能导致模型格式识别错误。
  • 检查路径正确性:移除model_path末尾的斜杠,避免路径拼接出现重复斜杠问题:
    model_path = "/home/priyanshi/Desktop/folder/models/bert_model"
    
  • 验证模型文件完整性:手动加载H5模型排查文件是否损坏:
    from tensorflow.keras.models import load_model
    model = load_model('/home/priyanshi/Desktop/folder/models/bert_model/tf_model.h5')
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 04:42:04