【pytorch】pytorch学习笔记(续1)

p22:1.加减乘除:

(1)add(a,b):等同于a+b。

(2)sub(a,b):等同于a-b。

(3)mul(a,b):等同于a*b。

(4)div(a,b):等同于a/b。a//b表示整除。

2.tensor的矩阵式相乘:matmul

注意区分:(1)*:表示相同位置的元素相乘;(2).matmul:表示矩阵相乘。

对于(2)矩阵的相乘,有三种方式:

(1)torch.mm:只适用于二维的tensor,不推荐。

(2)torch.matmul:适用于2d,3d,4d...   推荐。该函数只是对后两维进行矩阵相乘,前面的维度不变。若前面的维度中两个tensor有不相同的维度,则还需要使用broadcasting。

(3)@:是torch.matmul的重载的符号形式,是一样的原理。

pytorch默认的rand函数的第一个维度表示输出的维度,第二个维度表示输入的维度。

3.矩阵的乘方运算:pow(a:表示要进行次方运算的tensor,2/3/4...)

pow函数的重载符号维**。

4.矩阵的次方根:

(1)tensor.sqrt():开平方根。也可以用**(1/2,1/4,...)表示。

(2)tensor.rsqrt():tensor.sqrt()的倒数。用到稍微少一点。

补:

log表示以1为底,以2为底用log2,以10为底用log10。

5.矩阵的近似运算:

(1).floor():向下取整。

(2).ceil():向上取整。

(3).round():四舍五入。

(4).trunc():裁剪,就是把tensor裁剪成整数部分和小数部分,返回整数部分。

(5).frac():小数。

(6).clamp(min[,max]):裁剪。用的比较多。

w.grad.norm(2):打印矩阵w的模,用的是L2范数,.grad返回的是梯度。模如果等于100,就说明梯度已经很大了,属于梯度爆炸。

.clamp(min):将tensor中小于min的都置为min。

.clamp(min,max):将tensor中小于min的都置为min,大于max的都置为max。

p23:1.范数:norm(1/2:表示做L1范数还是L2范数[,dim=0/1/...:表示在具体的某一个维度上做范数]):注意:norm != normalize。

L1范数:所有元素绝对值之和。L2范数:所有元素绝对值的平方和开根号。

2.均值:.mean()=.sum()/prod(.size)

3.累乘:.prod()

4.最大值:.max()

5.最小值:.min()

6.求和:.sum()

7.最大值的位置:.argmax([dim=0:表示在第0个维度上求最大值的索引])

8.最小值的位置:.argmin([dim=0:表示在第0个维度上求最小值的索引])

注意:argmax,argmin不带参数的话,会先把tensor打平成一维的,然后再返回最大最小值的索引。

p24

9.dim:

10.keepdim:保持dimension前后tensor的维度一致。因为dimension操作本来就会消掉维度。

11.top-k:.topk(k,dim=1,largest=True(最大的k个)/False(最小的k个)):返回最大或最小的k个。会返回比max或min更多的数据。

12.k-th:即第k个的值:kthvalue(k,dim=1):只能表示最小的,即k表示第k小的。

13.比较(对每一个元素进行比较):

pytorch中没有True和False,因此用0表示False,用1表示True。

.eq(a,a):返回的是tensor,表示每个元素是否相等,相等为1,不相等为0.

.equal(a,a):返回的是True/False,判断两个tensor中的元素是否完全一样,所有元素都相等则返回True,否则返回False。

p25:1..where(condition,x:源头A,y:源头B):返回一个新的tensor。

condition、A、B的shape是一样的。

2..gather(input,dim,index,out=None):其实就是一个查表的过程。返回的是一个tensor。

(问题)上图中第19行中label.expand(4,10),label是一个size是[10]的tensor,使用expand操作后就变成了[4,10]的tensor,expand操作当确实维度的时候可以在当前维度前面自动添加一个新维度并对其进行扩展吗?这不是broadcasting的功能吗?

p26:1.梯度是所有偏微分组成的一个向量。

2.函数的梯度是一个向量,这个向量的方向表示这个函数在当前点的增长方向,这个向量的模即长度代表了这个函数在当前这个点增长的一个速率。

3.如何利用梯度找到极小值点?

p27:何凯明:Res-Net

1.一个凸函数总是可以找到一个全局最优点。

2.鞍点:在某个点取到一个维度的极大值,取到另一个维度的极小值,这个点就叫做鞍点。

3.影响搜索过程的因素:

(1)局部极小点

(2)鞍点

(3)初始状态:一定要初始化,没有把握的话可以用凯明初始化方法。

(4)学习率:如果设置的很大的话,很有可能直接就不收敛了。所以在做的时候要把学习率设置的小一点,如0.001,0.01,如果收敛了,可以适当调大lr,较快速度;如果不收敛,九八lr变得再小一点点。lr会影响收敛的速度和精度。

(5)动量:利用惯性逃出局部极小值:

.......

p28:1.logx的底为e。

p29:1.激活函数:来源于青蛙神经元:多个输入经过神经元后输出的并不是一个简单的线性函数,而是有一个阈值,大于这个阈值才会给出响应,否则不会响应。由此推出最一开始的激活函数是一个阶梯函数,不可导。为解决不可导这一问题,提出了一下的激活函数:

(1)sigmoid/Logistic:光滑,相当于压缩的效果:会把负无穷到正无穷的数压缩到0和1之间。常用,如概率,RGB等。

缺陷:x值接近于无穷大的时候,sigmoid函数的导数会非常接近于0,导致梯度下降参数长期不更新,这会导致梯度离散现象的出现。

pytorch实现:

.linespace(start,end,count):从start到end划分成count个片段。

一种实现:torch.sigmoid(tensor):实现sigmoid函数的运算。

另一种是实现:F.sigmoid(tensor)。

(2)tanh:在RNN中用的比较多。值在[-1,1]内。可以由sigmoid函数变换而来。

pytorch实现:

(3)ReLU

z=0时梯度为0,z>0时梯度为1,因此向后传播时梯度不会放大也不会缩小,计算简单,会保持梯度不变,这宴会很大程度上减少梯度离散和梯度爆炸的出现。

pytorch实现:

在做搜索的时候,优先使用ReLU函数,遇到特殊情况可以尝试一下其他函数。


(未完,待续~)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/646609.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PID控制算法,带C语言源码实现

1 PID简介 PID即:Proportional(比例)、Integral(积分)、Differential(微分)的缩写。PID控制算法是结合比例、积分和微分三种环节于一体的控制算法。PID算法是连续系统中技术最为成熟、应用最为…

gitlab runner 安装、注册、配置、使用(Docker部署)

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…

【工具使用-Everything】everything只能搜到文件夹,无法搜到文件

一,问题现象 everything搜索时,只能搜索到文件夹,无法搜索到文件夹下的文件。 二,问题原因 everything搜索设置问题,设置为"文件夹"导致 三,解决方法 将搜索选项设置为“所有”即可&#x…

5 新增课程

5.1 需求分析 5.1.1 业务流程 根据前边对内容管理模块的数据模型分析,课程相关的信息有:课程基本信息、课程营销信息、课程图片信息、课程计划、课程师资信息,所以新增一门课程需要完成这几部分信息的填写。 以下是业务流程: …

全链路压测:提升业务可靠性和可用性

全链路压测是一种全面评估系统性能和稳定性的测试方法,通过模拟真实用户场景和流程来验证整个应用系统在高负载情况下的表现。全链路压测的主要作用涵盖了多个方面: 性能评估与优化: 全链路压测可以全面评估系统在高负载下的性能表现&#xf…

代码评审——随机数Random问题

问题描述: 为了获取唯一值,经常会依赖产生随机数来保证唯一性。在获取随机数时,如果使用错误的方法,会比较低效。 可以参考以下代码: public static String geneRundomNo(){Random rnew Random();int numr.nextInt(…

day31_CSS

今日内容 CSS概述引入方式 (where)选择器(how)属性(how) 1 CSS介绍 层叠样式表(cascading style sheet) CSS 用来美化HTML页面,可以让页面更好看,还可以布局页面. 好处 美化页面,布局页面使用外部css文件,可以实现样式文件和html文件分离,便于维护使用外…

5.ROC-AUC机器学习模型性能的常用的评估指标

最近回顾机器学习基础知识部分的时候,看到了用于评估机器学习模型性能的ROC曲线。再次记录一下,想起之前学习的时候的茫然,希望这次可以更加清晰的了解这一指标。上课的时候听老师提起过,当时没有认真去看,所以这次可以…

SpeechGPT-Gen;使用Agents编辑图像;多模态扩散模型图像生成

本文首发于公众号:机器感知 SpeechGPT-Gen;使用Agents编辑图像;多模态扩散模型图像生成; CCA: Collaborative Competitive Agents for Image Editing This paper presents a novel generative model, Collaborative Competitive…

多流转换 (分流,合流,基于时间的合流——双流联结 )

目录 一,分流 1.实现分流 2.使用侧输出流 二,合流 1,联合 2,连接 三,基于时间的合流——双流联结 1,窗口联结 1.1 窗口联结的调用 1.2 窗口联结的处理流程 2,间隔联结 2.1 间隔联…

<网络安全>《2 国内主要企业网络安全公司概览(二)》

4 北京天融信科技有限公司(简称天融信) 信息内容LOGO成立日期创始于1995年总部北京市海淀区上地东路1号院3号楼北侧301室背景民营企业是否上市天融信[002212]A股市值99亿主要产品网络安全大数据云服务员工规模6000多人简介天融信科技集团(证券代码:0022…

书生·浦语大模型实战营-学习笔记6

目录 OpenCompass大模型测评1. 关于评测1.1 为什么要评测?1.2 需要评测什么?1.3 如何评测?1.3.1 客观评测1.3.2 主观评测1.3.3 提示词工程评测 2. 介绍OpenCompass工具3. 实战演示 OpenCompass大模型测评 1. 关于评测 1.1 为什么要评测&#…

人工智能系列 :与机器共生的未来

大家好,身处一个日新月异的时代,科技的浪潮汹涌而至,将人们推向未知的前方,一个充满人工智能与机器的世界。 这个未知的境地,或许令人心生恐慌,因为它的庞大未知性仿佛一团迷雾,模糊了大家的视…

Unity Mask合批情况验证

1.首先是两个Mask完全重合的情况下 每张图片使用的image都来自同一个图集 发现彼此之间是没有合批的,但是每个Mask内部是实现了合批的 经过计算此种情况的visiableList:mask1,IM1,IM2,mask2,IM3&#xf…

Docker安装Clickhouse详细教程

简介 ClickHouse是一种列式数据库管理系统,专门用于高性能数据分析和数据仓库应用。它是一个开源的数据库系统,最初由俄罗斯搜索引擎公司Yandex开发,用于满足大规模数据分析和报告的需求。 特点 开源的列式存储数据库管理系统,…

不学前沿技术与朽木浮草何异 ?Java18新特性

不学前沿技术与朽木浮草何异 ?Java18新特性 文章目录 不学前沿技术与朽木浮草何异 ?Java18新特性JEP 400:默认字符集为 UTF-8JEP 408:简易的 Web 服务器JEP 413:优化 Java API 文档中的代码片段JEP 416:使用方法句柄重新实现反射核心JEP 417: 向量 API&a…

06.搭建一个自己的私有仓库-Gitea

06.搭建一个自己的私有仓库-Gitea | DLLCNX的博客 如果你是一位程序员或者IT相关领域的从业者,那么肯定知道git,而且也或多或少接触了不少开源仓库以及公司的私有仓库,但是我们有没有想过自己也搭建一个私有仓库呢。 这么多开源仓库&#xf…

【51单片机系列】proteus中的LCD12864液晶屏

文章来源:《单片机C语言编程与Proteus仿真技术》。 点阵字符型LCD显示模块只能显示英文字符和简单的汉字,要想显示较为复杂的汉字或图形,就必须采用点阵图型LCD显示模块,比如12864点阵图型LCD显示模块。 文章目录 一、 LCD12864点…

The Sandbox 2024 Game Jam 进行中|游戏创作比赛!冲!

The Sandbox Game Jam 是面向所有游戏制作爱好者的创作比赛!我们诚邀您加入 The Sandbox 的生态系统,这里充满活力,游戏与文化相融,创作者彼此切磋,共同实现梦想。请尽情发挥你的想象力!The Sandbox 游戏由…

深度学习与大数据在自然语言处理中的应用与进展

引言 在当今社会,深度学习和大数据技术的快速发展为自然语言处理(NLP)领域带来了显著的进步。这种技术能够使计算机更好地理解和生成人类语言,从而推动了搜索引擎、语音助手、机器翻译等领域的创新和改进。 NLP的发展与技术进步…