我正在使用torch.save()保存模型文件。但是,每次保存时,它都会更改。为什么这样?
netG_1 = torch.load('netG.pth')
netG_2 = torch.load('netG.pth')
torch.save(netG_1, 'netG_1.pth')
torch.save(netG_2, 'netG_2.pth')
使用md5sum *.pth
:
779f0fefca47d17a0644033f9b65e594 netG_1.pth
476f502ec2d1186c349cdeba14983d09 netG_2.pth
b0ceec8ac886a11b79f73fc04f51c6f9 netG.pth
模型是此类的一个实例:
https://github.com/taoxugit/AttnGAN/blob/master/code/model.py#L397
答案 0 :(得分:5)
未定义__hash__
方法的类将根据其id
对其实例进行哈希处理。对于CPython,这意味着每次保存并重新加载实例时,由于其在内存中的位置已更改,因此它会更改哈希。
这是概念的证明。
class Foo:
pass
instance = Foo()
print('hash:', hex(hash(instance)))
print('id: ', hex(id(instance)))
hash: 0x22f3f57608
id: 0x22f3f576080
确切的变换是hash(o) == id(o) // 16
。