肥宅钓鱼网
当前位置: 首页 钓鱼百科

机器学习中样本容量选择(深度学习中的轴)

时间:2023-07-13 作者: 小编 阅读量: 4 栏目名: 钓鱼百科

深度学习中的轴在深度学习中,轴,指的就是张量的层级,一般通过参数axis/dim来设定很多张量的运算、神经网络的构建,都会涉及到轴,但到底取哪个轴,却不是那么容易把握下面会针对轴/axis/dim,基于Pytorc。

在深度学习中,轴,指的就是张量的层级,一般通过参数axis/dim来设定。很多张量的运算、神经网络的构建,都会涉及到轴,但到底取哪个轴,却不是那么容易把握。

下面会针对轴/axis/dim,基于 Pytorch 的代码和实例,尝试去理清张量运算中轴/axis/dim的设定。

轴的概念

对于一个张量,它的shape有几维,就对应有几个轴,也就对应着张量的层级,最直观的可以通过看最前面的方括号数量来判断。

import torcha = torch.Tensor([[1,2,3], [4,5,6]])b = torch.Tensor([[7,8,9], [10,11,12]])c = torch.Tensor([[[1,2,3], [4,5,6]], [[7,8,9], [10,11,12]]])print(a.shape)# torch.Size([2, 3])

上面的张量 a 和 b,都对应两个轴。axis/dim=0 对应 shape [2, 3] 中的2,axis/dim=1 对应 shape [2, 3] 中的3,而张量 c 有三个轴。

张量运算时对轴参数的设定非常常见,在 Numpy 中一般是参数axis,在 Pytorch 中一般是参数dim,但它们含义是一样的。

轴的使用

在做张量的拼接操作时,axis/dim设定了哪个轴,那对应的轴在拼接之后张量数会发生变化

>> torch.cat((a,b), dim=0)tensor([[ 1., 2., 3.],[ 4., 5., 6.],[ 7., 8., 9.],[10., 11., 12.]])​>> torch.cat((a,b), dim=1)tensor([[ 1., 2., 3., 7., 8., 9.],[ 4., 5., 6., 10., 11., 12.]])

对于上面torch中的cat操作,当设定dim=0时,两个维度是(2,3)的张量合并成了一个(4,3)的张量,在第0维,张量数从2变成了4,第1维没有变化;当设定dim=1时,在第1维,张量数从3变成了6,第0维没有变化。

在做张量的运算操作时,axis/dim设定了哪个轴,就会遍历这个轴去做运算,其他轴顺序不变

>> torch.softmax(a, dim=0)tensor([[0.0474, 0.0474, 0.0474],[0.9526, 0.9526, 0.9526]])​>> torch.softmax(a, dim=1)tensor([[0.0900, 0.2447, 0.6652],[0.0900, 0.2447, 0.6652]])

对于上面torch中的 softmax 操作,当设定 dim=0 时,就是其他轴不变,单次遍历 dim=0 轴的所有元素去做运算,上例中就相当于分别取了张量a中的第0列、第1列、第2列去做计算。

换一个角度,假设用for循环去遍历一个张量,那运算中设定的dim就是被放在最内层的for循环,其它的轴保持正常的顺序。

可以用下面的例子作为验证,这里tensor c 的shape 是 (m,n,p),用for循环去计算 torch.softmax(c, dim=1)

# for循环计算方式c = torch.Tensor([[[1,2,3], [4,5,6]], [[7,8,9], [10,11,12]]])# shape (2,2,3)m,n,p = c.shaperes = torch.zeros((m,n,p))for i in range(m):for j in range(p):res[i,:,j] = torch.softmax(torch.tensor([c[i,k,j] for k in range(n)]), dim=0) #这里对应最内层的for循环​# 库函数设定轴计算方式res1 = torch.softmax(c, dim=1)print(res.equal(res1))# True

axis/dim使用小总结:

  1. 在做张量的拼接操作时,axis/dim设定了哪个轴,那对应的轴在拼接之后张量数会发生变化
  2. 在做张量的运算操作时,axis/dim设定了哪个轴,就会遍历这个轴去做运算,其他轴顺序不变

实际上,第一条拼接操作也可以用第二条去理解,但拼接的轴张量数会发生变化更好理解和记忆。

轴的实例

其实一个轴设定的变化,会带来很大的差异,最典型的就是 BatchNorm 和 LayerNorm 了。

BatchNorm 和 LayerNorm 是针对数据的不同轴去做norm,假设输入数据的维度是(N,C,H,W),分别对应batch数,核数,高,宽,BatchNorm 就对应dim=0,LayerNorm 就对应dim=1,在不考虑移动平均等具体细节问题时,两者在形式上可以统一,只有一个dim参数的差别。

Pytorch 的实现(简化版)如下:

class Norm(nn.Module):def __init__(self, num_features, variance_epsilon=1e-12):super(Norm, self).__init__()self.gamma = nn.Parameter(torch.ones(num_features))self.beta = nn.Parameter(torch.zeros(num_features))self.variance_epsilon = variance_epsilon# 一个很小的常数,防止除0​def forward(self, x, dim):u = x.mean(dim, keepdim=True)s = (x - u).pow(2).mean(dim, keepdim=True)x_norm = (x - u) / torch.sqrt(sself.variance_epsilon)return self.gamma * x_normself.beta

当然,不仅仅是在深度学习里面,在 Numpy,Pandas中,轴的设定都经常会遇到,但它们都是相通的,希望本文能帮你更好的理解它 —> 轴。

    推荐阅读
  • 咳嗽时什么食物或水果不能吃(咳嗽时远离5类食物)

    但是,不合理的饮食也有可能会加重病情。寒凉食物咳嗽时不宜吃寒凉食物,如冷饮或冰激凌。如果饮食过凉,容易造成肺气闭塞,从而使咳嗽的症状加重,经久不愈。酸甜食物酸食一般可敛痰,使痰液不易咳出,从而加重病情。甜食具有一定的助热作用,可使炎症不易治愈,也应尽量避免。鱼虾蟹有些人在进食鱼、虾、蟹等海鲜后,咳嗽加重,这与腥味刺激呼吸道和对鱼虾蟹中的蛋白质过敏有关。

  • 补办医保卡当天能取吗(补办医保卡当天可以取吗)

    以下内容大家不妨参考一二希望能帮到您!补办医保卡当天能取吗医保卡补办,社保中心当天办当天就能拿到补办的新卡。服务银行网点现场核查持卡人证件后进行业务办理,审核通过后持卡人凭《非税收入电子票据》缴纳工本费。服务银行网点工作人员完成制卡后,申请人凭申办证件和业务受理回执领取社保卡,并当场办理社保卡金融账户的激活和个人医保账户的重新启用。

  • 三星fold 3和4对比(综合外观和性能)

    综合外观和性能三星新一代折叠屏旗舰GalaxyZFold4已经推出有一段时间了,上市之后凭借强大的产品力以及令人耳目一新的交互体验,市场反响热烈,广受消费者的支持和关注那么相比上一代GalaxyZFold3,新一代。

  • 男生和女人初步接触(男人女人的第一次)

    第一次当模特第一次喝醉了……第一次哭的那么伤心第一次啃“猪手第一次住宾馆~第一次自己解决温饱第一次接吻

  • 什么叫乏氏运动(关于乏氏运动介绍)

    什么叫乏氏运动乏氏动作是病人关闭声门用力呼气,此时腹肌应是收缩的。做该动作时主要发生以下血液动力学改变:摒气期间由于胸腔内压力突然增加,心脏回流减少,使心排出量及血压下降。乏氏反应指在彩色多普勒与频谱多普勒超声检查时,检查者深吸气后闭气,引起血流信号中断或出现短暂反流的现象。当下肢静脉血栓时,乏氏反应会消失或减弱。梗阻性心肌病采取药物或动物实验时,乏氏动作杂音增强。

  • 汉字印刷体是罪魁祸首(追溯汉字印刷体的)

    24日起,“活字生香”活字文化艺术全国巡展在上海中华印刷博物馆举办。今年76岁的陈其瑞也在开幕当天前来参观,站在一张张宋体字设计稿前他自豪地说,这些是他与上海印刷技术研究所的同事共同设计的成果。据介绍,上海是中国当代汉字印刷字体的发源地。2009年,上海印刷技术研究所申报的“汉字印刷字体书写技艺”项目,被列入上海市非物质文化遗产项目名录。据了解,该展览还将赴北京、天津、扬州巡展,持续至2019年。

  • 步步生莲什么意思(步步生莲意思和用法)

    我们一起去了解并探讨一下这个问题吧!步步生莲什么意思步步生莲字面意思就是步步生莲花,形容女子步态轻盈姿,姿态很美。步步生莲拼音为bùbùshēnglián。用法为复句式;作谓语;形容女子走路的仪态很美。她的身材婀娜多姿,举止投足非常优美,走起路来可谓是步步生莲。

  • 日本哪一年第一次进世界杯(世界杯的遗憾242002年的日本队)

    比赛中的中田英寿稻本润一的进球小组赛第二场比赛,日本队迎战身材高大强壮但因为年龄老化而身体机能下降、全体队员都瞧不起亚洲足球的俄罗斯队。全场比赛中,日本队占据主动,并且通过精彩的配合由稻本润一打入制胜球。稻本润一打进制胜球小组赛第三场比赛,日本队与突尼斯队交锋以争夺小组出线权。全场比赛占据主动的日本队,通过森岛宽晃和中田英寿的进球,以2:0取胜,并以小组第一昂首出线。

  • 奥巴梅扬或加盟巴萨进球(奥巴梅扬在巴萨身披25号)

    直播吧2月2日讯巴萨官方宣布奥巴梅扬加盟球队,根据西甲官方的信息,奥巴梅扬在巴萨将身披25号球衣。对于加蓬前锋来说,这也是全新的号码。07/08赛季奥巴梅扬身披41号效力AC米兰;08/09赛季在法甲第戎穿9号;09/10里尔和10/11摩纳哥期间身穿11号;11/12赛季在圣埃蒂安身穿7号;13/14赛季加盟多特蒙德后身穿17号征战5个赛季;17/18赛季冬窗来到阿森纳身披14号;国家队层面,奥巴梅扬一直身穿9号。

  • 武陟怎么读(武陟的简介)

    以下内容大家不妨参考一二希望能帮到您!武陟怎么读武陟拼音:[wǔzhì]。武陟县,隶属河南省焦作市,位于河南省西北部,总面积805平方千米,下辖4个街道、6个镇、5个乡,总人口74万。属暖温带大陆性季风气候,其中武陟大米和怀地黄、怀牛膝、怀山药、怀菊花四种中药材为地理标志保护产品。