Pytorch如何判断两个模型的权重是否相同(比较权重差异/参数字典)

  参考资料:

  GPT-4o mini的回答

  第一种方法是使用md5sum这个命令(Linux上),但是由于环境的不同,哪怕是load之后转存似乎都会有差,所以效果不大。

  第二种方法是使用代码比较,这段代码是我找GPT要的,感觉非常不错。

复制代码
from safetensors.torch import load_file

A = load_file("/data1/chaishang.cs/Tryon/hf_DATA/almmtryon-refinpaintxl-v0-1/unet/diffusion_pytorch_model.safetensors")
B = load_file("/data1/chaishang.cs/Tryon/datasets_and_weights/exps/refinpaintXL_v1_36cate_batch1_itagged_task1fulltask2partly_bz2_a100/2024-08-14T21-26-40/22000/unet/diffusion_pytorch_model.safetensors")

weight_changes = {}

# 遍历模型的所有参数
for (name, initial_param), (_, trained_param) in zip(A.items(), B.items()):
    # 计算权重变化
    change = torch.norm(trained_param - initial_param)  # 计算 L2 范数
    weight_changes[name] = change.item()  # 存储变化量

# 打印每层权重的变化
for layer_name, change in weight_changes.items():
    print(f"Layer: {layer_name}, Change: {change:.6f}")
复制代码

  如果参数是内存中的state_dict,对A和B进行替换即可。输出结果如下:

posted @   思念殇千寻  阅读(188)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示