Pytorch学习1

设置为CPU还是GPU:

device = torch.device(“cuda” if (use_cuda and torch.cuda.is_available()) else “cpu”)
device = torch.device(“cpu”)

将一个array转换成tensor:
I0=torch.from_numpy(I00)

记录一个tensor的梯度:
alpha = alpha.to(device)
alpha.requires_grad = True

想要I0和 I1一致:
在这里插入图片描述
用: I1=I1.squeeze()

本来I2是[28,28], 现在转换成[1,1,28,28]:
I2 = I2[np.newaxis,np.newaxis,:,:]

torch.save()用法:保存模型参数
torch.save(model.state_dict(), f’transformer_best.pth’)

pretrained_model = “data/lenet_mnist_model.pth”
model.load_state_dict(torch.load(pretrained_model, map_location=‘cpu’))
加载模型:model.load_state_dict

启用 Batch Normalization 和 Dropout。
如果模型中有BN层(Batch Normalization)和 Dropout,需要在训练时添加model.train()。model.train()是保证BN层能够用到每一批数据的均值和方差。对于Dropout,model.train()是随机取一部分网络连接来训练更新参数。
训练完train样本后,生成的模型model要用来测试样本。在model(test)之前,需要加上model.eval(),否则的话,有输入数据,即使不训练,它也会改变权值。这是model中含有BN层和Dropout所带来的的性质。

detach()生成的是无梯度的纯tensor。
https://zhuanlan.zhihu.com/p/410199046

加了 .item() 在精度上的区别:item
一个元素张量可以用x.item()得到元素值,我理解的就是一个是张量,一个是元素。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值