pytorch python区别_python中比较有用的package (V) -- pytorch

50.展开用reshape,或者view。不指定大小用-1代替。例如可以a.view(-1)将向量一维化。.item()能够将一个张量值标量取出。

51.与numpy之间转换关系,a.numpy()//torch.from_numpy()

52.通过创建张量时设置requires_grad=True可以实现自动微分,对张量进行各种运算操作,可以随时查看变量经历的操作使用x.grad_fn。需要求导时使用out.backward(),通过打印x.grad()即可。如果要查看在其他地方的梯度,使用v = torch.tensor([0.1, 1.0, 0.0001], dtype=torch.float)  y.backward(v)

53.创建一个以nn.Module为父类的子类,__init__初始化一些名词,所使用的层,self.conv1=nn.Conv2d(32,6,5),分别为输入,输出,核大小。定义完之后需要利用forward添加一些层间操作.之后实例化Net,out=net(input)即可开始前向传播。out.backward(torch.randn(1, 10))随机一个梯度进行反向传播。

54.损失函数部分:实例化一个损失函数criterion = nn.MSELoss(),得到真值和计算值之后,计算损失loss = criterion(output, target)

55.计算损失函数的梯度后开始更新权重import torch.optim as optim

optimizer = optim.SGD(net.parameters(), lr=0.01),输入参数是网络参数和学习率。步骤:优化器权重清零,计算输出,计算损失函数,损失函数后向求梯度,更新权重。

56.构造transform将数据转化成(-1,1)的数据

--------------------PROCESS-------------------------------

1.首先导入需要的包

2.数据生成,按照架构保存数据到不同文件夹下,生成路径txt

3.定义网络初始化已经定义前向函数,注意每一层的输入输出和大小。并且实例化。

4.定义损失函数和优化器,以及学习率和momentum,根据分类情况选择损失函数

5.训练网络,for循环轮数,每轮loss归零,对于每个图片在trainloader迭代器循环,得到inputs,labels,初始化梯度,即opt.zero_grad(),在网络内部前向传播得到输出,根据输出和labels计算loss。计算梯度,而后更新权值。计算所有图片的loss,输出总的loss。

6.计算测试集精度,with torch.no_grad(): 测试只需要前向传播,在testloader中读取数据,得到images,labels,前向传播得到输出, _, predicted = torch.max(outputs.data, 1)   # 找出分数最高的对应的channel,即为top-1类别,之后计算精度。

7.保存模型,save状态字典和路径,load加载路径即读取模型,使用时实例化后加载状态矩阵即可。a2d4b27c3d8cf9a9affde30c002180e9.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值