当前位置: 首页 > news >正文

[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()

转载于:https://www.cnblogs.com/aoru45/p/10720981.html

相关文章:

  • 五子棋游戏
  • TMG 2010 部署与入门配置
  • 搭建自己的code-push-server服务器
  • Hyper-V 配置网络 (高级篇)
  • HTTP劫持和DNS劫持
  • 关于语言的争论
  • webservice学习教程(一):理论
  • C中int8_t、int16_t、int32_t、int64_t、uint8_t、size_t、ssize_t区别
  • 自制jQuery图片切换插件ImgSlider v1.0
  • CORS简介
  • 《Android/OPhone 开发完全讲义》目录
  • mac pycharm快捷键
  • asp.net architecture
  • Exchange 2010 之:1—DAG
  • 什麽才是考驗人生的跟本
  • 【前端学习】-粗谈选择器
  • Android 初级面试者拾遗(前台界面篇)之 Activity 和 Fragment
  • Angular2开发踩坑系列-生产环境编译
  • CSS实用技巧干货
  • Debian下无root权限使用Python访问Oracle
  • IndexedDB
  • Less 日常用法
  • Otto开发初探——微服务依赖管理新利器
  • quasar-framework cnodejs社区
  • SegmentFault 社区上线小程序开发频道,助力小程序开发者生态
  • Service Worker
  • spring boot 整合mybatis 无法输出sql的问题
  • TypeScript迭代器
  • Web Storage相关
  • 解析带emoji和链接的聊天系统消息
  • 聚簇索引和非聚簇索引
  • 那些年我们用过的显示性能指标
  • 如何打造100亿SDK累计覆盖量的大数据系统
  • 三分钟教你同步 Visual Studio Code 设置
  • 3月27日云栖精选夜读 | 从 “城市大脑”实践,瞭望未来城市源起 ...
  • !$boo在php中什么意思,php前戏
  • #define
  • #我与Java虚拟机的故事#连载07:我放弃了对JVM的进一步学习
  • (附源码)node.js知识分享网站 毕业设计 202038
  • (附源码)spring boot基于小程序酒店疫情系统 毕业设计 091931
  • (附源码)spring boot球鞋文化交流论坛 毕业设计 141436
  • (附源码)spring boot网络空间安全实验教学示范中心网站 毕业设计 111454
  • (转)linux自定义开机启动服务和chkconfig使用方法
  • .net core 6 集成 elasticsearch 并 使用分词器
  • .NET Standard / dotnet-core / net472 —— .NET 究竟应该如何大小写?
  • .secret勒索病毒数据恢复|金蝶、用友、管家婆、OA、速达、ERP等软件数据库恢复
  • [ C++ ] STL_list 使用及其模拟实现
  • [ vulhub漏洞复现篇 ] JBOSS AS 4.x以下反序列化远程代码执行漏洞CVE-2017-7504
  • [\u4e00-\u9fa5] //匹配中文字符
  • [1]-基于图搜索的路径规划基础
  • [100天算法】-不同路径 III(day 73)
  • [C/C++]数据结构 循环队列
  • [C++]指针与结构体
  • [datastore@cyberfear.com].Elbie、[thekeyishere@cock.li].Elbie勒索病毒数据怎么处理|数据解密恢复
  • [EFI]DELL XPS13 9360电脑 Hackintosh 黑苹果efi引导文件