pytorch记录

Facebook 2017年1月发行的pytorch,越来越受到欢迎。相似于torch,却有着自己的优势。Torch和PyTorch的底层都是一个C语言实现的库函数。

1、模型save和load

model = CSRNet()
model = model.cuda()
save模型:model.cpu().state_dict() #只是把所有模型的参数都以OrderedDict的形式存下来。

torch.save(network.cpu().state_dict(), 't.pth')
pretrained_net = torch.load('t.pth')

for key, v in enumerate(pretrained_net):
    print key, v

load模型:
checkpoint = torch.load(‘PartBmodel_best.pth.tar’)#torch.load 返回的是一个 OrderedDict
model.load_state_dict(checkpoint[‘state_dict’])

如果重新写这个网络的,比如使用Net_new,这个网络是将每一层都作为类的一个属性。如果直接load

new_network = Net_new()
new_network.load_state_dict(pretrained_net)

2、torch.nn.Conv2d()函数详解 对由多个输入平面组成的输入信号进行二维卷积

import torch
#输入 [ batch_size, channels, height_1, width_1 ]
#一个batch中样例的个数       2  
#通道数,也就是当前层的深度  1
#图片的高   7
#图片的宽   3
x = torch.randn(2,1,7,3)  
#[ channels, output, height_2, width_2 ]
#通道数,和上面保持一致,也就是当前层的深度  1
#输出的深度    8
#过滤器filter的高    2
#过滤器filter的宽  3   
conv = torch.nn.conv2d(1,8,(2,3))
#[ batch_size,output, height_3, width_3 ]
#一个batch中样例的个数       2  
#输出的深度    8
# 卷积结果的高度                                      6 = height_1 - height_1 + 1 = 7-2+1
# 卷积结果的宽度                      1 = width_1 - width_2 +1 = 3-3+1
res = conv(x)
print(res.shape)    # shape = (2, 8, 6, 1)

3、pytorch能自动反向传播。 前向传播时,能够自动记录每个操作的拓扑顺序,反向传播时则可以自动反向传播

torch.autograd提供实现任意标量值功能的自动区分的类和功能

4、
pytorch和torch的对比。pytorch将所有的Container都用autograd替代
pytorch的网络模块只有.weight和.bias。而那些梯度.gradInput和.output都被消除。
在这里插入图片描述

5、torch.cat是将两个张量(tensor)拼接在一起,cat是concatnate的意思,即拼接,联系在一起

C=torch.cat((A,B),0)就表示按维数0(行)拼接A和B,也就是竖着拼接,A上B下。此时需要注意:列数必须一致,即维数1数值要相同,这里都是3列,方能列对齐。拼接后的C的第0维是两个维数0数值和,即2+4=6.

C=torch.cat((A,B),1)就表示按维数1(列)拼接A和B,也就是横着拼接,A左B右。此时需要注意:行数必须一致,即维数0数值要相同,这里都是2行,方能行对齐。拼接后的C的第1维是两个维数1数值和,即3+4=7.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值