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笔记 <三>的更多相关文章

  1. 莫烦pytorch学习笔记(二)——variable

    .简介 torch.autograd.Variable是Autograd的核心类,它封装了Tensor,并整合了反向传播的相关实现 Variable和tensor的区别和联系 Variable是篮子, ...

  2. 莫烦 - Pytorch学习笔记 [ 二 ] CNN ( 1 )

    CNN原理和结构 观点提出 关于照片的三种观点引出了CNN的作用. 局部性:某一特征只出现在一张image的局部位置中. 相同性: 同一特征重复出现.例如鸟的羽毛. 不变性:subsampling下图 ...

  3. pytorch学习笔记(十二):详解 Module 类

    Module 是 pytorch 提供的一个基类,每次我们要 搭建 自己的神经网络的时候都要继承这个类,继承这个类会使得我们 搭建网络的过程变得异常简单. 本文主要关注 Module 类的内部是怎么样 ...

  4. 《CMake实践》笔记二:INSTALL/CMAKE_INSTALL_PREFIX

    <CMake实践>笔记一:PROJECT/MESSAGE/ADD_EXECUTABLE <CMake实践>笔记二:INSTALL/CMAKE_INSTALL_PREFIX &l ...

  5. jQuery源码笔记(二):定义了一些变量和函数 jQuery = function(){}

    笔记(二)也分为三部分: 一. 介绍: 注释说明:v2.0.3版本.Sizzle选择器.MIT软件许可注释中的#的信息索引.查询地址(英文版)匿名函数自执行:window参数及undefined参数意 ...

  6. Mastering Web Application Development with AngularJS 读书笔记(二)

    第一章笔记 (二) 一.scopes的层级和事件系统(the eventing system) 在层级中管理的scopes可以被用做事件总线.AngularJS 允许我们去传播已经命名的事件用一种有效 ...

  7. Python 学习笔记二

    笔记二 :print 以及基本文件操作 笔记一已取消置顶链接地址 http://www.cnblogs.com/dzzy/p/5140899.html 暑假只是快速过了一遍python ,现在起开始仔 ...

  8. WPF的Binding学习笔记(二)

    原文: http://www.cnblogs.com/pasoraku/archive/2012/10/25/2738428.htmlWPF的Binding学习笔记(二) 上次学了点点Binding的 ...

  9. webpy使用笔记(二) session/sessionid的使用

    webpy使用笔记(二) session的使用 webpy使用系列之session的使用,虽然工作中使用的是django,但是自己并不喜欢那种大而全的东西~什么都给你准备好了,自己好像一个机器人一样赶 ...

  10. AJax 学习笔记二(onreadystatechange的作用)

    AJax 学习笔记二(onreadystatechange的作用) 当发送一个请求后,客户端无法确定什么时候会完成这个请求,所以需要用事件机制来捕获请求的状态XMLHttpRequest对象提供了on ...

随机推荐

  1. 电脑c盘爆满检查与设置

    C盘文件爆满,先检查是那个文件造成的 操作方法:打开文件夹选项,将“隐藏受保护的操作系统文件(推荐)”前的勾选去掉,然后打开系统盘查看是那个文件占用空间大 Hiberfil.sys文件删除方法: 1. ...

  2. Windows下 virtualenv 使用

    Windows下 virtualenv 使用 win python virtualenv 首先在电脑上安装两个不同版本的python mkvirtualenv --python C:\Python34 ...

  3. Problem08 输入数字求和

    题目:求s=a+aa+aaa+aaaa+aa...a 的值,其中a 是一个数字.例如2+22+222+2222+22222(此时共有5 个数相加),几个数相加有键盘控制. 程序分析:关键是计算出每一项 ...

  4. mgo01_window server 2012上安装mongo4.0

    目前mongo最新版为4.0(2018-07-18),下载地址 https://fastdl.mongodb.org/win32/mongodb-win32-x86_64-2008plus-ssl-4 ...

  5. c++中 函数的默认参数 学习

    默认参数指的是当函数调用中省略了实参时     自动使用一个默认的值. 对于带参数列表的函数,必须从右向左添加默认值  (就是说她的右边肯定是先有默认的值) fun(int ,1,2,3) 不能 fu ...

  6. RestTemplate中几种常见的请求方式

    GET请求 第一种:getForEntity getForEntity方法的返回值是一个ResponseEntity<T>,ResponseEntity<T>是Spring对H ...

  7. 怎么调取dede三级栏目名及栏目下的内容列表

    网站根据需要,把地区划成省-市-文章的层级结构,栏目首页需要显示的是 {dede:channelarclist} <!--省显示--> <a href=""> ...

  8. linux下Python2.7编译安装PyQt5

    ---作者吴疆,未经允许,严禁转载,违权必究--- ---欢迎指正,需要源码和文件可站内私信联系--- -----------点击此处链接至博客园原文----------- 功能说明:在ubuntu系 ...

  9. C++ stl vector介绍

    转自: STL vector用法介绍 介绍 这篇文章的目的是为了介绍std::vector,如何恰当地使用它们的成员函数等操作.本文中还讨论了条件函数和函数指针在迭代算法中使用,如在remove_if ...

  10. MyEclipse 比较常用的快捷键

    Ctrl+D: 删除当前行 Alt+↓ 当前行和下面一行交互位置(特别实用,可以省去先剪切,再粘贴了) Alt+↑ 当前行和上面一行交互位置(同上) Alt+← 前一个编辑的页面 Alt+→ 下一个编 ...