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

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

时间: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中,轴的设定都经常会遇到,但它们都是相通的,希望本文能帮你更好的理解它 —> 轴。

    推荐阅读
  • 为什么我的微信没有微粒贷(为什么微信没有微粒贷)

    跟着小编一起来看一看吧!为什么我的微信没有微粒贷由于微粒贷这款产品,主要采用的是邀请制的方式,只有受到邀请的用户才能开通。当然,没有微粒贷的用户也不要太担心,继续保持好自己良好的信用,估计马上也会被系统邀请了。微粒贷属于微众银行的一款小额贷产品,主要通过微信和QQ两大平台进行推广。

  • 喝冰水的好处和坏处(喝冰水的好处和坏处有哪些)

    喝冰水的好处和坏处喝冰水的好处:适当缓解头晕头疼的症状,从而到达清爽舒适的效果,有效地帮助我们降低自身容易出现咽喉肿痛的几率。冰水喝多了不仅会使身体体温快速下降,还容易刺激咽喉、支气管,引发咳嗽、支气管炎等不适。而中医认为,喝冰水还容易使寒邪入侵肺部而使人咳嗽,更容易感冒;腹痛腹泻。食物在胃肠道中的时间太短,消化吸收不完全,引起腹胀,腹泻;消化不良。

  • 商标网上注册缴费通知单(商标注册网上服务系统今起全面上线运行)

    “随着我国一直以来大力推行商标注册全程电子化,昨日商标局官网发出公告,宣布商标网上服务系统拟定将于11月5日全面上线,届时商标注册的操作及流程将更为便捷。商标局官网截图通告全文如下按照商标注册便利化改革总体部署,我局积极推进商标注册全程电子化,努力打造更为优质、高效、便捷的商标注册网上服务平台。现将有关事项公告如下:商标网上服务系统拟于11月5日全面上线运行。届时,通过商标网上服务系统提交的商标申

  • 1981年12月24日是什么星座(1981年12月24日是摩羯座)

    下面希望有你要的答案,我们一起来看看吧!1981年12月24日是什么星座阳历12月24日的星座:摩羯座。摩羯座,摩羯座也是黄道十二宫的第十宫,出生日期为12月22日至1月19日,位于射手座之东,水瓶座之西。摩羯座是象征着冬天开始的星座,是天使与魔鬼兼并融合的星座。摩羯座的人踏实温润,你将是一个徘徊在理想与现实之间的人,你很难在这之间寻找平衡点,而且你会是一个主观意识很强的人。

  • 床一动就响跟床垫有关吗(床一动就响是不是跟床垫有关)

    床一动就响跟床垫有关吗?不是床垫的问题,是床的质量问题,原因如下:,今天小编就来说说关于床一动就响跟床垫有关吗?下面更多详细答案一起来看看吧!可能是床尾与床轨连接松动引起的声音。然后,就可以用角码加强,就不会有声音了。

  • 青海湖在哪个省哪个市(青海湖的简介)

    青海湖在哪个省哪个市青海湖属于:青海省的西宁市。青海湖,是我国第一大内陆湖泊,也是我国最大的咸水湖。它浩瀚缥缈,波澜壮阔,是大自然赐与青海高原的一面巨大的宝镜。青海湖,古代称为“西海”,又称“鲜水”或“鲜海”。从北魏起才更名为“青海”。这里的花儿的黄色映衬着青海湖的蓝色成为一幅绚丽多彩的画面,每一个到了这里的游客都会深深地爱上这幅画面。

  • 包心菜怎么泡腌(包心菜泡腌方法)

    包心菜怎么泡腌?跟着小编一起来看一看吧!卷心菜去掉根部,洗干净,用手撕成片状。容器里加半碗清水,又加盐、冰糖、八角,慢慢搅拌至盐和冰糖化开,便于入味均匀;把卷心菜放入盐水中,拌匀腌制1个半小时。芹菜洗干净,切成四五厘米长的菱形块。姜、大蒜切成粒,小葱切成葱花。把腌好的卷心菜用清水冲洗一下,沥干水份。容器里加入卷心菜、辣椒面、姜、大蒜拌匀。放入冰箱存放半个小时就可以装盘,撒上葱花。

  • 工程公司员工怎么交工伤保险(工程公司员工怎么交工伤保险费)

    按照比例进行缴纳:建筑单位工伤保险基准为单位职工工资总额的1.3%。根据《工伤保险条例》第十条第三款的授权,对建筑、服务、矿山等行业中难以直接按照工资总额计算缴纳工伤保险费的,按照特殊方式进行缴费的规定。其中建筑施工企业可以实行以建筑施工项目为单位,按照项目工程总造价的一定比例,计算缴纳工伤保险费。风险较大行业例如:炼焦及核心燃料加工业,石油加工,化学原料及化学制品制造业等等。

  • 梅陇中学简介(梅陇中学的介绍是什么呢)

    梅陇中学简介上海市普陀区梅陇中学创建于1964年,学校位于丹巴路1588号。学校教学设备先进,师资力量雄厚,并获得许多奖项。四十余年来,梅陇人始终锐意进取、稳步前行。梅陇中学还被评为市花园单位、市安全文明单位、区体教结合先进学校等,数学教研组获市劳模集体提名奖,所获各项荣誉不胜枚举。

  • 朝辞白帝彩云间千里江陵一日还的意思是什么(朝辞白帝彩云间原文介绍)

    朝辞白帝彩云间千里江陵一日还的意思是什么?以下内容希望对你有帮助!从江上往高处看,可以看见白帝城彩云缭绕,如在云间,景色绚丽!千里之遥的江陵,一天之间就已经到达。两岸猿声啼不住,轻舟已过万重山。