模型参数文件.pth查阅

因为需要将pth参数搞出来,但是模型生成的权重文件无法直接打开,(txt、pycharm打开均乱码)。根据广大csdn大佬支招分享,本人使用以下代码代码来读取网络层和相关参数,总结如下:
1.终端可视版本pycharm一键运行
存在问题:模型参数多了显示不全
2.txt版本

import torch

pthfile = r'./openpose_vgg_quant.pth'  # .pth文件的路径
model = torch.load(pthfile)  # 设置在cpu环境下查询

# 打开一个文件用于写入
with open('weight.txt', 'w') as f:
    # 写入模型类型和长度
    f.write('type:\n')
    f.write(str(type(model)) + '\n')
    f.write('length:\n')
    f.write(str(len(model)) + '\n\n')

    # 写入模型字典的key
    f.write('key:\n')
    for k in model.keys():
        f.write(k + '\n')
    f.write('\n')

    # 写入模型字典的value
    f.write('value:\n')
    for k in model:
        # 将键和值转换为字符串,并写入文件
        # 使用repr函数可以获取值的准确表示,适合于复杂的数据结构
        f.write(k + ': ' + repr(model[k]) + '\n')

ps:这个代码仅保证全部存入txt,格式还需微调才可匹配,今天用的网络参数太多了,明天换个小点的网络在调整一下。2024.5.13~打卡下班撤退!
5.14新的一天记录

import torch
path = './openpose_vgg_quant.pth'
pretrained_dict = torch.load(path)
##########################列出所有的参数名称及其尺寸######################
for key, value in pretrained_dict.items():
    print(key, value.size())
##########################列出所有的参数名称及其尺寸######################

每层四个参数,权重、偏置,缩放因子、零点
每层四个参数,

新的一天新的问题!!!!为什么我量化后的参数还是float呜呜呜T_T
怎么办怎么办怎么办怎么周二就想摸鱼了呜呜呜
今天也是不想学习的 一天T_T想回宿舍躺着玩呜呜呜
太神奇了!天奔流阴阴的,突然太阳出现了金碧辉煌的,后面还有火烧云!太美好了上图
在这里插入图片描述5.14晚思考:明天trytry能不能只提取weight跟bias,之前搜到过单纯print model参,但是我的应用不了。
515思路:先把.pth的tensor数据搞出来,然后给他们做成一行一个数形式
今天是小白搞代码

f.write(f"Key: {key}\n")  # 写入键名码片
# f 前缀表明这是一个格式化字符串字面量。
# {key} 是一个表达式,它会被替换为变量 key 的当前值。在这个上下文中,key 可能是一个表示模型参数名称的字符串,如 "model0.0.weight" 或 "model0.0.bias"。
# \\n 是一个转义序列,代表一个换行符。在字符串中使用它会导致字符串输出后进行换行

515晚总结:今天只把bias(因为他是float32可以用value.tolist())一行一个输出出来了,但是量化后的权重是int8类型,不可以使用这个函数,应该是数据类型不匹配。明天搞!在这里插入图片描述

在这里插入图片描述
5.16 Python的str()函数
坏处:str()函数默认会尝试提供一个简洁的、可读的表示,而不是显示对象的全部内容,尤其是当对象的内容非常长时。在你提供的代码片段中,当你尝试将张量对象v转换为字符串并写入文件时,如果张量非常大,str(v)可能会返回一个使用省略号的简化表示,而不是张量的完整内容。这就是为什么在生成的output.txt文件中,一些数据被省略号替代的原因。
repr()函数:它会提供张量的准确字符串表示,包括其完整内容。不过,这可能会导致生成的文本文非常大,且内容难以阅读。此外,对于非常大的张量,即使是repr()也可能无法完整显示所有数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值