m0_50988560 2022-09-25 00:52
浏览 616
已结题

joblib.load()无法加载模型

问题遇到的现象和发生背景

使用joblib.dump()保存模型后,再使用joblib.load()读取模型,当是简单的模型可以读取,例如线性回归,分类问题等,但是一旦遇到多层模型后保存模型一切正常,但是joblib.load()读取就找不到文件

用代码块功能插入代码,请勿粘贴截图
# 选择模型
from keras.models import Sequential
from keras.layers import Dense,Activation
mlp = Sequential()
# units隐藏层有多少个神经元   input_dim有几个位置参数这里x1,x2    activation激活函数
mlp.add(Dense(units=20,input_dim=2,activation='sigmoid'))
mlp.add(Dense(units=1,activation='sigmoid'))
mlp.summary()

# 配置模型训练参数 例如损失函数,优化方法等
mlp.compile(optimizer='adam',loss = 'binary_crossentropy')
# 模型训练传递数据以及模型训练迭代次数
mlp.fit(x_train,y_train,epochs=10000)

import joblib
joblib.dump(mlp,'mlp.h5')
import joblib
mlp2 = joblib.load('mlp.h5')
运行结果及报错内容

---------------------------------------------------------------------------
FileNotFoundError                         Traceback (most recent call last)
Input In [11], in <cell line: 2>()
      1 import joblib
----> 2 mlp2 = joblib.load('mlp.h5')

File D:\work\anaconda\envs\imooc_ai\lib\site-packages\joblib\numpy_pickle.py:585, in load(filename, mmap_mode)
    579             if isinstance(fobj, str):
    580                 # if the returned file object is a string, this means we
    581                 # try to load a pickle file generated with an version of
    582                 # Joblib so we load it with joblib compatibility function.
    583                 return load_compatibility(fobj)
--> 585             obj = _unpickle(fobj, filename, mmap_mode)
    586 return obj

File D:\work\anaconda\envs\imooc_ai\lib\site-packages\joblib\numpy_pickle.py:504, in _unpickle(fobj, filename, mmap_mode)
    502 obj = None
    503 try:
--> 504     obj = unpickler.load()
    505     if unpickler.compat_mode:
    506         warnings.warn("The file '%s' has been generated with a "
    507                       "joblib version less than 0.10. "
    508                       "Please regenerate this pickle file."
    509                       % filename,
    510                       DeprecationWarning, stacklevel=3)

File D:\work\anaconda\envs\imooc_ai\lib\pickle.py:1213, in _Unpickler.load(self)
   1211             raise EOFError
   1212         assert isinstance(key, bytes_types)
-> 1213         dispatch[key[0]](self)
   1214 except _Stop as stopinst:
   1215     return stopinst.value

File D:\work\anaconda\envs\imooc_ai\lib\pickle.py:1590, in _Unpickler.load_reduce(self)
   1588 args = stack.pop()
   1589 func = stack[-1]
-> 1590 stack[-1] = func(*args)

File D:\work\anaconda\envs\imooc_ai\lib\site-packages\keras\saving\pickle_utils.py:47, in deserialize_model_from_bytecode(serialized_model)
     45             with tf.io.gfile.GFile(dest_path, "wb") as f:
     46                 f.write(archive.extractfile(name).read())
---> 47 model = save_module.load_model(temp_dir)
     48 tf.io.gfile.rmtree(temp_dir)
     49 return model

File D:\work\anaconda\envs\imooc_ai\lib\site-packages\keras\utils\traceback_utils.py:70, in filter_traceback.<locals>.error_handler(*args, **kwargs)
     67     filtered_tb = _process_traceback_frames(e.__traceback__)
     68     # To get the full stack trace, call:
     69     # `tf.debugging.disable_traceback_filtering()`
---> 70     raise e.with_traceback(filtered_tb) from None
     71 finally:
     72     del filtered_tb

File D:\work\anaconda\envs\imooc_ai\lib\site-packages\tensorflow\python\saved_model\load.py:933, in load_partial(export_dir, filters, tags, options)
    930   loader = Loader(object_graph_proto, saved_model_proto, export_dir,
    931                   ckpt_options, options, filters)
    932 except errors.NotFoundError as err:
--> 933   raise FileNotFoundError(
    934       str(err) + "\n You may be trying to load on a different device "
    935       "from the computational device. Consider setting the "
    936       "`experimental_io_device` option in `tf.saved_model.LoadOptions` "
    937       "to the io_device such as '/job:localhost'.")
    938 root = loader.get(0)
    939 root.graph_debug_info = loader.adjust_debug_info_func_names(debug_info)

FileNotFoundError: Unsuccessful TensorSliceReader constructor: Failed to find any matching files for ram://d15d67b8-99bd-44be-ab65-451b5e08be7f/variables/variables
 You may be trying to load on a different device from the computational device. Consider setting the `experimental_io_device` option in `tf.saved_model.LoadOptions` to the io_device such as '/job:localhost'.
我的解答思路和尝试过的方法

尝试了不同版本的joblib,尝试了绝对路径,尝试了./文件名,尝试了pkl .m .h5等文件

我想要达到的结果

可以正常的读取模型

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 10月3日
    • 创建了问题 9月25日

    悬赏问题

    • ¥15 求会做聚类,TCN的朋友有偿线上指导。以下是目前遇到的问题
    • ¥100 无网格伽辽金方法研究裂纹扩展的程序
    • ¥15 错误于library(org.Hs.eg.db): 不存在叫‘org.Hs.eg.db’这个名称的程序包,如何解决?
    • ¥60 求一个图片处理程序,要求将图像大小跟现实生活中的大小按比例联系起来的
    • ¥50 求一位精通京东相关开发的专家
    • ¥100 求懂行的大ge给小di解答下!
    • ¥15 pcl运行在qt msvc2019环境运行效率低于visual studio 2019
    • ¥15 MAUI,Zxing扫码,华为手机没反应。可提高悬赏
    • ¥15 python运行报错 ModuleNotFoundError: No module named 'torch'
    • ¥100 华为手机私有App后台保活