【问题标题】:How to open a .pkl file如何打开 .pkl 文件
【发布时间】:2021-11-18 15:28:09
【问题描述】:

虽然已经有很多与我的问题相关的主题,但答案对我来说通常是无法理解的,因为我只是“在 Python 中编写脚本”领域的初学者。

这是我的情况:

有一种机器学习软件在其学习阶段结束时以.pkl 格式编写模型。我想让那些model.pkl 文件可由操作员打开以检查模型内部的内容。因此,我开始编写一个脚本,该脚本将使用pickle.load 方法并将我的model.pkl 中包含的数据写入.txt 文件。这是我开始写的内容:

import pickle 
import os 

model_path=input("Model Path = ")
with open(model_path, "rb") as model :
    load = pickle.load(model, encoding='utf-8')
    new_model_path = model_path.split('.pkl')[0] +'.txt'
    print("creating new file at : ", new_model_path)
    model_readable = open(new_model_path, 'rt')
    model_readable.write(load)
    print("writing model as readable : ", load)
model_readable.close()
model.close()

如果我尝试运行它,输出如下:

python3.7 unpickler.py    
Model Path = /home/ouriacc/Desktop/workspace/SESAM/Base_de_tests/Anomalie_1/Models/OCSVM/EyeSat/CI_HEATER_CAMERA_VOLTAGE.pkl
    Traceback (most recent call last):
      File "unpickler.py", line 7, in <module>
        load = pickle.load(model, encoding='utf-8')
    _pickle.UnpicklingError: invalid load key, '_'.

我找不到有关此错误的任何解释,这并不意味着下载不完整或损坏,这不是我的情况,因为一旦 AI 创建了 model.pkl 文件,它们就不会被修改软件。

有人可以帮我解决错误,甚至可以告诉我其他方法来实现我的目标吗?我只需要一个脚本,让用户可以访问 .pkl 文件包含的内容。

非常感谢!

【问题讨论】:

  • 用于生成.pkl 文件的pickle 版本是否与您的版本相同? import pickle print(pickle.__version__)
  • 是的,我使用相同的 python 库(python 3.7 库)在我的计算机上生成了文件。
  • 您是否使用scikit-learn 创建模型?
  • 是的,我确实是!有没有发病率?

标签: python pickle


【解决方案1】:

所以我明白了为什么@wundermahn 会询问scikit-learn。我的model.pkl 文件似乎是由joblib 生成的,而不是pickle 库。这就是为什么它显然不起作用的原因。它通过将pickle.load() 替换为joblid.load() 来更改我的代码,并且效果更好!

谢谢!

【讨论】:

    猜你喜欢
    • 2020-10-08
    • 2019-07-17
    • 1970-01-01
    • 1970-01-01
    • 2020-04-05
    • 2021-12-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多