21合并与分割2

split
按照长度/单元长度拆分

 c的shape是[2,32,8]aa,bb=c.split(1,dim=0)#操作单元是在0维度上操作,拆分单元长度是1aa,bb=c.split(2,dim=0)#报错 dim=0长度才是2,但是拆分长度要求2,拆不开,split必须拆分c的shape是[3,32,8]aa,bb=c.split([2,1],dim=0)#操作单元是在0维度上操作,拆分单元长度是2和1
import torch
a=torch.rand(32,8)
b=torch.rand(32,8)
c=torch.stack([a,b],dim=0)
print(c.shape)#torch.Size([2, 32, 8])
c=torch.rand(5,32,8)
aa,bb=c.split([4,1],dim=0)#在dim=0上 把5分成4,1
print(aa.shape)#torch.Size([4, 32, 8])
print(bb.shape)#torch.Size([1, 32, 8])aa,bb,cc=c.split([2,2,1],dim=0)#在dim=0上 把5分成2,2,1
print(aa.shape)#torch.Size([2, 32, 8])
print(bb.shape)#torch.Size([2, 32, 8])
print(cc.shape)#torch.Size([1, 32, 8])

chunk 要拆分几个单位,split是拆分的单位多长

22数学运算
Math operation
▪ Add/minus/multiply/divide
▪ Matmul
▪ Pow
▪ Sqrt/rsqrt
▪ Round

basic
加减乘数可以直接用±*/ 其中//表示整除
也可用add sub mul div

matmul
矩阵乘法中
.*是相同位置相乘
.matmul是矩阵乘法
可以用@或者.matmul,.mm只用在2d

例子
(4,784)降维成(4,512) 所以(4,784)@(784,512),但是一般用于变换的矩阵w是写成(ch-out,ch-in)所以784是in,512是out,所以要乘以w的转置,w.t(),.t只用于二维的,其他要用transpose

大于2d的均值乘法

a[4,3,28,64]
b[4,3,64,32]
torch.matmul(a,b)
#前两维不变,后面(28,64)@(64,32)所以最终是[4,3,28,32]a[4,3,28,64]
b[4,1,64,32]
torch.matmul(a,b)
#b中的1可以通过broadcast变成3,保持前两维度相同,后面(28,64)@(64,32)所以最终是[4,3,28,32]a[4,3,28,64]
b[4,64,32]
torch.matmul(a,b)
#b中的4不可以还是a中的3都不是1不能通过broadcast,所以报错


power

求幂运算
a.pow(2)#平方
a2#平方
aa.sqrt()#平方根
aa.rsqrt()#平方根的导数
a
(0.5)#开方


exp log
log默认以e为底,e=2.7183
改变底直接写log2.(a)或者log10.(a)

a=torch.exp(torch.ones(2,2))
print(a)
b=torch.log(a)
c=torch.log2(a)
d=torch.log10(a)
print(b,c,d)
'''
tensor([[2.7183, 2.7183],[2.7183, 2.7183]])
tensor([[1., 1.],[1., 1.]]) tensor([[1.4427, 1.4427],[1.4427, 1.4427]]) tensor([[0.4343, 0.4343],[0.4343, 0.4343]])'''

Approximation
近似值
▪ .floor() #下限 往小的取
▪ .ceil()#上限 天花板 往大的取
▪ .round()#四舍五入
▪ .trunc()#裁剪成整数部分
▪ .frac()#裁剪成小数部分


clamp
裁剪梯度
梯度离散 梯度很小趋近于0
梯度爆炸 梯度很大大于10,可以打印w.grad.norm(2)看这个数值

a=torch.rand(2,3)#0-1分布
print(a)
grad=a*15#15倍放大
print(grad)print(grad.max())
print(grad.median())
print(grad.clamp(10))#(min)小于10的位置补成10print(grad)print(grad.clamp(0,10))#大于10的位置补成10 (min,max)'''
tensor([[0.0980, 0.3470, 0.5863],[0.7546, 0.1118, 0.9067]])
tensor([[ 1.4703,  5.2043,  8.7948],[11.3190,  1.6768, 13.6002]])
tensor(13.6002)
tensor(5.2043)
tensor([[10.0000, 10.0000, 10.0000],[11.3190, 10.0000, 13.6002]])
tensor([[ 1.4703,  5.2043,  8.7948],[11.3190,  1.6768, 13.6002]])
tensor([[ 1.4703,  5.2043,  8.7948],[10.0000,  1.6768, 10.0000]])
'''

23统计属性1

statistics
▪ norm
▪ mean sum
▪ prod
▪ max, min, argmin, argmax
▪ kthvalue, topk

norm
这里的norm是范数的意思,不是normalize正则化


norm-p

b.norm(1,dim=1)#在dim=1上进行1的norm,是第二行的求和 shape是[2] 维度是1
b.norm(2,dim=0)#在dim=0上进行2的norm,是第二行的求和结果再开方 shape是[2] 维度是1
对于c而言 dim=0是最外层的维度,取哪个维度的范数那个维度就消掉

mean, sum, min, max, prod(累乘)
argmax就是将整个tensor打平后max的索引值
argmin就是将整个tensor打平后min的索引值

a.argmax(dim=1)在每一行中找最大值的索引,可以理解为在手写数字中找每张图片中概率最大的那个label,dim=1是在10上做索引,返回的shape是[4]
如果在dim=0是在4上做索引,返回的shape是[10]

24属性统计2

dim keepdim
keepdim是让max之后的索引维度(本来是1维度 只有一行就是每张图片最大值的索引值)和原来a的维度(本来是2维度 4行10列)保持一致

top-k k-th
top-k默认返回最大的k个,找最小的k个largest设置为false
k-th返回第k小的value

compare

equal就是整体比
eq就是比每个内容单独比

25高阶操作

where
适用于分布采样,就是不规则的赋值,完成逻辑时序控制,这样可以运行在gpu上

概率p越大越可能取a ,概率越小越可能取b,
p=0.5大于0.5取a,a值是0,小于0.5取b ,b值是1

gather


实现从reletive到global的一个映射
7,4,9到107,104,109
long是类型转换

pytorch教程龙曲良21-25相关推荐

  1. pytorch教程龙曲良36-40

    36函数极小值优化实战 四个解都是0所以都是全局最小值 PLOT #最小值0取的值(x,y)是(3,2)x初始化是0 #最小值0取的值(x,y)是(3.584428,-1.8484=126)x初始化是 ...

  2. pytorch教程龙曲良46-55

    46交叉验证2 只能用val set反馈去调整参数,看到test acc 不该做任何事情,如果反馈去调整参数泛化能力会变弱 k-fold cross-validation 如果按照原来的划分是50k ...

  3. pytorch教程龙曲良41-45

    41激活函数与GPU加速 sigmoid /Tanh 会出现梯度离散问题,就是梯度为0(导数为0) relu 在x=0处不连续,x小于0时梯度为0,x大于0梯度为1不变,利于串行的传播,这样就不会出现 ...

  4. pytorch教程龙曲良01-05

    01深度学习框架与介绍 pytorch优势 1使用gpu加速 # -*- codeing = utf-8 -*- # @Time :2021/5/6 20:51 # @Author:sueong # ...

  5. pytorch教程龙曲良31-35

    31激活函数与Loss的梯度3 softmax 概率0-1,且所有所属结点的概率和为1,用softmax适合多分类,且把之间的差距拉大,本来2.0与1.0差两倍,现在0.7与0.2差3.5倍 求的是p ...

  6. pytorch教程龙曲良26-30

    26什么是梯度1 导数(在给定方向的变化量)和偏微分(在给定的自变量上的变化量)都是标量,只有大小没有方向 梯度就是所有偏微分的向量,有方向有大小 函数梯度是一个向量,向量方向表示这个函数在当前点的一 ...

  7. pytorch教程龙曲良16-20

    17维度变换4 .t 转置,但是只适合2d的矩阵,其他会报错 a.shape#[3,4] a.t() a.shape#[4,3] transpose 加粗样式 a.shape#[4,3,32,32] ...

  8. pytorch教程龙曲良11-15

    11创建tensor02 randn一般是均值为0,方差为1的正态分布N(0,1),也可以自定义N(u,std)用torch.normal torch.normal(mean=torch.full([ ...

  9. pytorch教程龙曲良06-10

    06手写数字识别1 每张图片2828 针对y=wx+b 对于手写数字图片来说可以用灰度0-1表示,所以就是2828值在0-1的矩阵,然后打平变成784的向量 y的维度怎么表示 法1先讨论H1,H2,H ...

最新文章

  1. 指针的本质--u_char*指针在Nginx源码中的应用及原因
  2. jQuery判断当前元素显示状态并控制元素的显示与隐藏
  3. (1)搞一搞 seata 之 基础环境搭建
  4. V3S文件系统基本构架
  5. wxWidgets 示例演示 wxWrapSizer 的使用
  6. 19-A Walk-based Model on Entity Graphs for Relation Extraction(句内多对,多关系,多元,2018ACL
  7. python环境搭建什么意思_如何搭建Python环境
  8. javascript焦点图
  9. 【转】Maven实战(八)---模块划分
  10. 两大思维,就可以让你轻松完成任意一个目标
  11. 游戏必备组件有哪些_微信抖音小游戏黄金矿工案例详解
  12. 仿CAD画椭圆弧步骤思路(附加代码)
  13. 李宏毅老师《机器学习》课程笔记-1深度学习简介
  14. Flask:工厂函数和蓝本
  15. Android开发经验
  16. 电脑上一键从视频提取音频,windows电脑和mac电脑都可以用
  17. SQL基础教程|第一章:数据库和SQL
  18. python与其他的数据分析有什么区别_学好python和数据分析有什么关系?
  19. c语言中a-这个作用是什么,c语言中a*=y什么意思?
  20. oracle rrsf_Oracle实战笔记(第三天)

热门文章

  1. 25、【华为HCIE-Storage】--Hyper Snapshot(文件业务)
  2. C#通过Redis实现分布式锁
  3. poj 1729 Jack and Jill (搜索,bfs)
  4. 移动端触摸移动小demo
  5. 如何开发Web应用程序(非网站)
  6. 【Daily Scrum】11-26
  7. 二、Spark在Windows下的环境搭建
  8. 代码编辑器揭露性格,你是哪一种?
  9. android sdio 时钟 ios-clock,iOS 炫酷时钟
  10. 登录方式1:MySQL自带客户端