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

news2024/11/15 19:38:35

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.coloradmin.cn/o/1410071.html

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

相关文章

前端 防止浏览器提示记住密码以及自动填充密码

当前端 <input /> 的 type’password‘ 时&#xff0c;浏览器为了优化用户体验&#xff0c;会在表单提交后提示用户记住密码 如果不想要这样的行为&#xff0c;最简单的当然是提示用户自己在浏览器设置中进行相关配置 如果希望在代码层面阻止浏览器提示是否记住密码或者…

AI开发——探索人工智能时代的无限可能

在当今信息化时代&#xff0c;人工智能&#xff08;Artificial Intelligence&#xff0c;简称AI&#xff09;以其强大的计算能力和智能分析能力成为科技界的热门话题。AI开发正处于快速发展的阶段&#xff0c;各行业都在积极探索和应用AI技术&#xff0c;推动人工智能时代的到来…

【c++】高精度算法(洛谷刷题2024)乒乓球详解

系列文章目录 第一题 乒乓球 视频&#xff1a;http://【洛谷题单 - 算法 - 高精度】https://www.bilibili.com/video/BV1Ym4y1s7BD?vd_source66a11ab493493f42b08b31246a932bbb 目录 系列文章目录 第一题 乒乓球 前言 一、题目以及引领思考 二、题解与代码 1.输入输出案例 …

查看Pytorch的GPU是否可用

查看Pytorch的GPU是否可用 import torch torch.cuda.is_available()返回为True表示 Pytorch 的 GPU 可用&#xff0c;返回为False表示 Pytorch 的 GPU 不可用。 其余命令&#xff1a; # 查看cuda是否可用 torch.cuda.is_available() # 返回当前设备索引 torch.cuda.current_d…

还在纠结怎么选随身WiFi的,看看这个!随身WiFi靠谱榜第一名推荐!哪个随身WiFi最好用

你是不是还在头疼如何挑选一个靠谱好用的随身WiFi呢&#xff1f;市场上的随身WiFi产品五花八门&#xff0c;每次购买随身WiFi都会被坑&#xff0c;差点就失去购买的信心了~别灰心&#xff0c;一篇文章教你如何挑选一个靠谱好用的随身WiFi&#xff01; 一、5大购买原则&#xff…

C++:缺省参数函数重载

目录 C/C语言 函数调用的工作原理&#xff1a; 函数调用一般分为两个部分&#xff1a; 缺省参数&#xff1a; 缺省参数的分类&#xff1a; 全缺省参数 半缺省参数 注意事项&#xff1a; 缺省参数与C语言的调用参数对比&#xff1a; 函数重载&#xff1a; 函数重载…

C++ qt标题栏组件绘制

本博文源于笔者在学习C qt制作的标题栏组件&#xff0c;主要包含了&#xff0c;最小化&#xff0c;最大化&#xff0c;关闭。读者在看到这篇博文的时候&#xff0c;可以直接查看如何使用的&#xff0c;会使用了&#xff0c;然后进行复制粘贴源码部分即可。 问题来源 想要制作…

【禅道】下载安装及基本流程----【图文并茂】从头到尾讲解

目录 一 禅道简介 二 下载安装 三 基本流程 3.1添加用户(管理员) 3.2 添加产品 (产品经理) 3.2.1 创建模块 3.2.2 创建计划 3.2.3 创建需求 3.3 添加项目(项目经理) 3.3.1 设置团队 3.3.2 关联产品需求 3.2.3 分配任务 3.3.4 创建版本(研发人员) 3.3.5 提交测试 …

SecureCRT的安装

SecureCRT的安装 加强版的串口调试助手 全部默认安装&#xff0c;默认安装在c盘 SecureCRT收费&#xff0c;可以下载Putty安装 后续完善

关于Spring和缓存雪崩、穿透、击穿、预热的最常见的十道面试题

面试题一&#xff1a;什么是缓存雪崩&#xff1f;如何解决缓存雪崩&#xff1f; 缓存雪崩指的是在短时间内&#xff0c;有大量的请求直接查询术后句酷&#xff0c;从而对数据库造成大量的压力&#xff0c;严重情况下可能导致数据库宕机的情况叫做缓存雪崩 我们可以看一下正常…

k8s架构、工作流程、集群组件详解

目录 k8s概述 特性 作用&#xff08;为什么使用&#xff09; k8s架构 k8s工作流程 k8s集群架构与组件 核心组件详解 Master节点 Kube-apiserver Kube-controller-manager Kube-scheduler 存储中心 etcd Node Kubelet Kube-Proxy 网络通信模型 容器引擎 k8s核…

【C语言入门】分支和循环

✨✨欢迎大家来到Celia的博客✨✨ &#x1f389;&#x1f389;创作不易&#xff0c;请点赞关注&#xff0c;多多支持哦&#x1f389;&#x1f389; 所属专栏&#xff1a;C语言 个人主页&#xff1a;Celias blog~ 目录 引言 1. if语句 1.1 if 1.2 else 1.3 if的嵌套 2. 操…

python 正则表达式学习(1)

正则表达式是一个特殊的字符序列&#xff0c;它能帮助你方便的检查一个字符串是否与某种模式匹配。 1. 特殊符号 1.1 符号含义 模式描述^匹配字符串的开头$匹配字符串的末尾.匹配任意字符&#xff0c;除了换行符&#xff0c;当re.DOTALL标记被指定时&#xff0c;则可以匹配包…

计算机设计大赛 协同过滤电影推荐系统

文章目录 1 简介1 设计概要2 课题背景和目的3 协同过滤算法原理3.1 基于用户的协同过滤推荐算法实现原理3.1.1 步骤13.1.2 步骤23.1.3 步骤33.1.4 步骤4 4 系统实现4.1 开发环境4.2 系统功能描述4.3 系统数据流程4.3.1 用户端数据流程4.3.2 管理员端数据流程 4.4 系统功能设计 …

工厂HVAC暖通系统如何实现优化?

在工厂运营中&#xff0c;HVAC暖通系统是维持良好生产环境的关键组成部分。然而&#xff0c;由于能效低下&#xff0c;这些系统可能导致昂贵的能源开支&#xff0c;同时对环境造成负担。本文将深入研究工厂HVAC系统的能效低下原因&#xff0c;介绍HVAC系统优化的关键步骤&#…

老照片模糊不清怎么修复?教你几个修复模糊照片的方法

老照片&#xff0c;如同历史的见证者&#xff0c;承载着家族的记忆与故事。它们无声地诉说着我们的成长轨迹&#xff0c;将那些温馨而美好的瞬间永恒定格。然而&#xff0c;岁月无情&#xff0c;这些老照片逐渐变得模糊不清&#xff0c;甚至布满了岁月的痕迹&#xff0c;令我们…

【第六课课后作业】大模型评测

大模型评测 大模型评测安装环境安装数据准备查看支持的数据集和模型 启动测评评测结果 大模型评测 安装 环境安装 conda create --name opencompass --clone/root/share/conda_envs/internlm-base source activate opencompass git clone https://github.com/open-compass/ope…

防火墙安全策略以及NAT简易拓扑

实验需求 拓扑如下 前期的配置如二层交换机和防火墙的配置就不再赘述 感兴趣的童鞋可以看上一篇博客 防火墙路由模式简易拓扑-CSDN博客 这里主要讲一讲安全策略&#xff0c;用户认证以及NAT策略的配置 配置实现 安全策略 1.生产区在工作时间内可以访问DMZ区&#xff0c;仅…

Python requests网络库源码分析(第三篇:通过学习异常模块,了解http协议)

前言 作者在requests包下&#xff0c;定义了exceptions模块&#xff0c;该模块中定义执行http请求过程中常见的错误&#xff0c;熟悉这些错误有助于我们写出健壮的业务程序&#xff0c;同时还能温习http的知识点&#xff0c;本文基于的requests版本为2.27.1 exceptions模块&…

qt学习:tcp区分保存多个客户端

在前面文掌的tcp客服端服务端进行更改 qt学习&#xff1a;Network网络类tcp客户端tcp服务端-CSDN博客https://blog.csdn.net/weixin_59669309/article/details/135842933?spm1001.2014.3001.5501前面的服务端每次有新的客户端连接&#xff0c;就会覆盖掉原来的指针&#xff0…