pytorch官方中文文档
https://ptorch.com/docs/1/torch-nn
pytorch基础教程
https://www.jianshu.com/p/79aebbc126e6
pytorch常用代码段集合整理
https://blog.csdn.net/zwqjoy/article/details/90258373
Pytorch数据读取3种方式
超赞博客!
https://www.cnblogs.com/kk17/p/10105862.html
Pytorch的super类
https://blog.csdn.net/shiheyingzhe/article/details/83051471
super类的作用是继承的时候,调用含super的各个的基类__init__函数,如果不使用super,就不会调用这些类的__init__函数,除非显式声明。而且使用super可以避免基类被重复调用。
super的典型用法:
在具有单一继承结构的类层级中,super可以指代父类而不需要显式的声明,这对更改父类的时候是有帮助的;
在动态执行环境中支持多继承协作,这个功能是python独有的,使得有可能解决菱形图问题,指多个基类实现相同的方法。
PyTorch 可视化工具 Visdom 介绍
https://www.pytorchtutorial.com/pytorch-visdom/
https://blog.csdn.net/nanxiaoting/article/details/81395579
visdom 可以实现远程数据的可视化,对科学实验有很大帮助。我们可以远程的发送图片和数据,并进行在ui界面显示出来,检查实验结果,或者debug
1.安装visdom:pip install visdom
2.在shell下,输入: python -m visdom.server,则开启web服务。
3.在浏览器输入:http://localhost:8097 ,即跳出界面。
pytorch 加载(.pth)格式的模型
https://blog.csdn.net/u014264373/article/details/85332181
https://www.cnblogs.com/qinduanyinghua/p/9311410.html
1、保存和加载整个模型(.pkl)
torch.save(model_object, ‘model.pkl’)
model = torch.load(‘model.pkl’)
2、仅保存和加载模型参数(推荐使用)
torch.save(model_object.state_dict(), ‘params.pkl’)
model_object.load_state_dict(torch.load(‘params.pkl’))
3、pytorch保存数据的格式为.t7文件或者.pth文件,或者.pkl格式,t7文件是沿用torch7中读取模型权重的方式
Pytorch格式转换
Numpy转Tensor
B=torch.from_numpy(a)
Tensor转numpy
B=a.numpy()
转list
B=a.tolist()
pytorch dataset dataloader
https://blog.csdn.net/zw__chen/article/details/82806900
pytorch预训练模型下载
http://blog.sciencenet.cn/home.php?mod=space&uid=538909&do=blog&id=1127538
pytorch预训练模型相关问题:
https://blog.csdn.net/chanbo8205/article/details/89923453
载入变量和权重组成的字典:torch.load
pretrain_dict=torch.load(r'../pretrained_model/se_resnext101_32x4d-3b2fe3d8.pth')
载入新的模型self.basemodel = tvm.resnet50(pretrained=False)
获取模型的变量和权重组成的字典:basemodel.state_dict()
model_dict = self.basemodel.state_dict()
名称不同的时候更换dict中的变量名:
方法1:
for k, v in pretrained_dict.items():
print("pretrained k,v:",k,v)
if not k.find("basemodel") == -1: #if find pretrain model name, delete it
name = k[(len("basemodel")+1):] # remove `module.`
model_dict[name] = v
else:
name = k
print("new_name:",name)
方法2:
pretrained_dict = {k[(len("basemodel")+1):]: v for k, v in pretrained_dict.items() if k[(len("basemodel")+1):] in model_dict} #去除上次预训练时模型的变量前面添加的”basemodel”字样
查看变量和权重字典中的某一个:
#-----------------------------------------------------
self.basemodel = tvm.resnet50(pretrained=False)
count=0
model_dict=torch.load(r'../pretrained_model/resnet50-19c8e357.pth')
for k, v in model_dict.items():
count+=1
if count==10:
print("resnet50_dict resnet50 k,v:",k,v)
#-----------------------------------------------------
count=0
for k, v in pretrained_dict.items():
count+=1
if count==10:
print("pretrained_dict resnet50 k,v:",k,v)
#-----------------------------------------------------