[Pytorch] pytorch笔记 <三>
pytorch笔记 <三>
optimizer.zero_grad()
将梯度变为0,用于每个batch最开始,因为梯度在不同batch之间不是累加的,所以必须在每个batch开始的时候初始化累计梯度,重置为0.
for epoch in range(num_epoches):# 每个epoch
for inputs,labels in dataloader:# 每个batch
optimizer.zero_grad()# 初始化梯度
outputs = model(inputs)# 正向
_,pred = torch.max(outputs,1)
loss = criterion(inputs,pred)# 计算loss
#...
loss.backward() # 反向
optimizer.step()# 更新权重
torch.max()
在某个dim上返回最大的值以及在该dim上的索引,所以是返回两个值。
max(input, dim, keepdim=False, out=None)
>>> import torch
>>> a = torch.randn(3,3)
>>> print(torch.max(a,1))
(tensor([1.0404, 1.8460, 0.5961]), tensor([2, 1, 0]))
model(x)输出的是概率,要获得类别必须通过torch.max来获得,但是我们求loss的时候还是求网络输出概率与label的loss,因为我们的label是被one-hot编码的,所以这两者的loss才是有效的,因为交叉熵衡量的是两个概率分布之间的相似度。
optimizer.step() 以及 scheduler.step()
optimizer.step()用在每个batch内,当一个batch的数据计算完之后,通过optimizer.step()函数来完成权重的更新,而scheduler.step()用在每个epoch内,当一个epoch的数据运算完之后,调用一下这个函数,以此来决策是否更新我们的learning_rate超参等。
exp_lr_scheduler = lr_scheduler.StepLR(optimizer_ft, step_size=7, gamma=0.1)
# 每隔step_size个epoch learning_rate变为原来的0.1
# 然后在一个epoch之后执行
exp_lr_scheduler.step()
[Pytorch] pytorch笔记 <三>的更多相关文章
- 莫烦pytorch学习笔记(二)——variable
.简介 torch.autograd.Variable是Autograd的核心类,它封装了Tensor,并整合了反向传播的相关实现 Variable和tensor的区别和联系 Variable是篮子, ...
- 莫烦 - Pytorch学习笔记 [ 二 ] CNN ( 1 )
CNN原理和结构 观点提出 关于照片的三种观点引出了CNN的作用. 局部性:某一特征只出现在一张image的局部位置中. 相同性: 同一特征重复出现.例如鸟的羽毛. 不变性:subsampling下图 ...
- pytorch学习笔记(十二):详解 Module 类
Module 是 pytorch 提供的一个基类,每次我们要 搭建 自己的神经网络的时候都要继承这个类,继承这个类会使得我们 搭建网络的过程变得异常简单. 本文主要关注 Module 类的内部是怎么样 ...
- 《CMake实践》笔记二:INSTALL/CMAKE_INSTALL_PREFIX
<CMake实践>笔记一:PROJECT/MESSAGE/ADD_EXECUTABLE <CMake实践>笔记二:INSTALL/CMAKE_INSTALL_PREFIX &l ...
- jQuery源码笔记(二):定义了一些变量和函数 jQuery = function(){}
笔记(二)也分为三部分: 一. 介绍: 注释说明:v2.0.3版本.Sizzle选择器.MIT软件许可注释中的#的信息索引.查询地址(英文版)匿名函数自执行:window参数及undefined参数意 ...
- Mastering Web Application Development with AngularJS 读书笔记(二)
第一章笔记 (二) 一.scopes的层级和事件系统(the eventing system) 在层级中管理的scopes可以被用做事件总线.AngularJS 允许我们去传播已经命名的事件用一种有效 ...
- Python 学习笔记二
笔记二 :print 以及基本文件操作 笔记一已取消置顶链接地址 http://www.cnblogs.com/dzzy/p/5140899.html 暑假只是快速过了一遍python ,现在起开始仔 ...
- WPF的Binding学习笔记(二)
原文: http://www.cnblogs.com/pasoraku/archive/2012/10/25/2738428.htmlWPF的Binding学习笔记(二) 上次学了点点Binding的 ...
- webpy使用笔记(二) session/sessionid的使用
webpy使用笔记(二) session的使用 webpy使用系列之session的使用,虽然工作中使用的是django,但是自己并不喜欢那种大而全的东西~什么都给你准备好了,自己好像一个机器人一样赶 ...
- AJax 学习笔记二(onreadystatechange的作用)
AJax 学习笔记二(onreadystatechange的作用) 当发送一个请求后,客户端无法确定什么时候会完成这个请求,所以需要用事件机制来捕获请求的状态XMLHttpRequest对象提供了on ...
随机推荐
- 生成jvm快照文件
原文:https://blog.csdn.net/jijianshuai/article/details/79128033 -Xmx20m -Xms5m -XX:HeapDumpOnOutofMem ...
- Unity3d 破解
在官网上或者其他地方下载unity3d后 运行注册机,需要详细的设置可以点击edit 一.点击browse,选择安装unity目录下的Editor文件夹 二.选择path,会提示Pathed 三. ...
- mysql 死锁解决办法
查询表的时候,发现一圈圈转啊转,就是不出来数据,猜测表被锁住 解决办法 : mysql> show processlist ; mysql> kill 4; 说明 : 4为 i ...
- 如何成为一名:黑客/Programmer/Python高手
如何成为一名黑客 Eric Steven Raymond https://translations.readthedocs.org/en/latest/hacker_howto.html How To ...
- SETI ACdream - 1430 后缀自动机求不相交子串
http://blog.csdn.net/gatevin/article/details/45875343 题目是求不重叠的不同子串个数 一般来说, endpos集合包含了子串结尾位置,结尾在&quo ...
- VB.NET中的模块
在C#中有“静态类”的概念,自然里边全部的方法都是静态的.这意味着你可以直接通过"类名.方法名"去调用(例如System的Math类就是典型).在VB.NET中,没有“静态类”的概 ...
- Linux网卡操作
单个网卡操作 [root@localhost ~]# ifdown eth0 #关闭网络 [root@localhost ~]# ifup eth0 #启动网络 网络服务: [root@localho ...
- php锁定文本框内容的方法
有时候我们希望表单中的文本框是只读的,让用户不能修改其中的信息,如<input type="text" name="zg" value="中国& ...
- java学习第十四天
1:正则表达式(理解) (1)就是符合一定规则的字符串 (2)常见规则 A:字符 x 字符 x.举例:'a'表示字符a \\ 反斜线字符. \n 新行(换行)符 ('\u000A') \r 回车符 ( ...
- MVC execl 导入导出
MVC execl 导入导出 <input id="xls" name="xls" type="file" style="w ...