自学内容网 自学内容网

关于模型保存报错的问题

———— 破案了

目录

———— 破案了

说一千道一万亦张图道尽一切

突出对比 

也仅限于保存和加载模型字典。

pt也可以

不同后缀报错各有千秋 

AI看看就好了、

 模型字典与优化器字典均可保存和加载了


说一千道一万亦张图道尽一切

 

突出对比 

万万没想到,问题出在后缀。

同样的模型,ptl报错,pth可以? 

把后缀ptl改成pth,可以保存模型字典。

也仅限于保存和加载模型字典。

model。save照样报错

pt也可以

当然了,保存整个模型也不行 

不同后缀报错各有千秋 

ptl

为了他,我改完了所有的lambda函数,没有卵用 

pth和ptl一样

pt

全文::
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
~\anaconda3\lib\site-packages\torch\serialization.py in _check_seekable(f)
    307     try:
--> 308         f.seek(f.tell())
    309         return True

~\anaconda3\lib\site-packages\torch\nn\modules\module.py in __getattr__(self, name)
   1206                 return modules[name]
-> 1207         raise AttributeError("'{}' object has no attribute '{}'".format(
   1208             type(self).__name__, name))

AttributeError: 'MultKAN' object has no attribute 'seek'

During handling of the above exception, another exception occurred:

AttributeError                            Traceback (most recent call last)
~\AppData\Local\Temp/ipykernel_5908/2619555284.py in <module>
----> 1 torch.load(model,"model_weights.pt")

~\anaconda3\lib\site-packages\torch\serialization.py in load(f, map_location, pickle_module, **pickle_load_args)
    697         pickle_load_args['encoding'] = 'utf-8'
    698 
--> 699     with _open_file_like(f, 'rb') as opened_file:
    700         if _is_zipfile(opened_file):
    701             # The zipfile reader is going to advance the current file position.

~\anaconda3\lib\site-packages\torch\serialization.py in _open_file_like(name_or_buffer, mode)
    233             return _open_buffer_writer(name_or_buffer)
    234         elif 'r' in mode:
--> 235             return _open_buffer_reader(name_or_buffer)
    236         else:
    237             raise RuntimeError(f"Expected 'r' or 'w' in mode but got {mode}")

~\anaconda3\lib\site-packages\torch\serialization.py in __init__(self, buffer)
    218     def __init__(self, buffer):
    219         super(_open_buffer_reader, self).__init__(buffer)
--> 220         _check_seekable(buffer)
    221 
    222 

~\anaconda3\lib\site-packages\torch\serialization.py in _check_seekable(f)
    309         return True
    310     except (io.UnsupportedOperation, AttributeError) as e:
--> 311         raise_err_msg(["seek", "tell"], e)
    312     return False
    313 

~\anaconda3\lib\site-packages\torch\serialization.py in raise_err_msg(patterns, e)
    302                                 + " Please pre-load the data into a buffer like io.BytesIO and"
    303                                 + " try to load from it instead.")
--> 304                 raise type(e)(msg)
    305         raise e
    306 

AttributeError: 'MultKAN' object has no attribute 'seek'. You can only torch.load from a file that is seekable. Please pre-load the data into a buffer like io.BytesIO and try to load from it instead.

哦,是一样的 

AI看看就好了、

在PyTorch中,模型保存通常使用两种文件格式:.pt.pth。这两种后缀没有本质区别,它们都是用于保存PyTorch模型的状态字典(state dictionary)或整个模型(包括模型结构和参数)。

以下是关于何时使用这两种后缀的一般建议:

  1. .pth后缀.pth是PyTorch传统上使用的文件扩展名,它通常用于保存模型权重。这是最常见的选择,特别是在官方文档和示例中。

  2. .pt后缀.pt是另一种常见的文件扩展名,它同样可以用于保存模型权重或整个模型。这个后缀在某些情况下更受欢迎,因为有些人认为它更短、更易于输入。

实际上,你可以自由选择使用哪一个后缀,因为它们对PyTorch来说是完全等价的。以下是如何使用PyTorch保存和加载模型的示例:

保存模型权重(推荐):

 

torch.save(model.state_dict(), 'model_weights.pth')  # 使用.pth后缀
# 或者
torch.save(model.state_dict(), 'model_weights.pt')    # 使用.pt后缀

保存整个模型:

 

torch.save(model, 'entire_model.pth')  # 使用.pth后缀
# 或者
torch.save(model, 'entire_model.pt')    # 使用.pt后缀

加载模型权重:

 

model.load_state_dict(torch.load('model_weights.pth'))
# 或者
model.load_state_dict(torch.load('model_weights.pt'))

加载整个模型:

 

model = torch.load('entire_model.pth')
# 或者
model = torch.load('entire_model.pt')

重要的是,无论你选择哪种后缀,确保在加载模型时使用相同的后缀名。此外,选择哪种后缀通常取决于个人或团队的习惯。如果你在一个团队中工作,最好遵循团队已经建立的约定。

 

 模型字典与优化器字典均可保存和加载了

 


原文地址:https://blog.csdn.net/m0_68339197/article/details/145234011

免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!