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

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

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

深度学习中的轴在深度学习中,轴,指的就是张量的层级,一般通过参数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中,轴的设定都经常会遇到,但它们都是相通的,希望本文能帮你更好的理解它 —> 轴。

    推荐阅读
  • 亚洲的亚怎么组词(亚洲的亚词语)

    亚洲的亚怎么组词东亚[dōngyà]亚洲大陆的东部。亚洲[yàzhōu]五大洲之一。位于东半球的东北部。居民主要是黄种人。南亚[nányà]亚洲南部地区。指亚洲西南部地区。包括阿富汗、伊朗、阿塞拜疆、格鲁吉亚、亚美尼亚、土耳其、塞浦路斯、叙利亚、黎巴嫩、巴勒斯坦、以色列、约旦、伊拉克、科威特、沙特阿拉伯、也门、阿曼、阿拉伯联合酋长国、卡塔尔和巴林等国。有婚姻关系的亲戚。

  • 罗伯特帕丁森新版蝙蝠侠预告(罗伯特帕丁森成)

    在今年戛纳电影节上亮相的新作《灯塔》,被称为罗伯特·帕丁森目前为止“职业生涯最佳”。C逃避追踪,准备躲进“蝙蝠洞”罗伯特·帕丁森出演新一任“蝙蝠侠”的消息曝光后,网上出现不小的反弹,甚至有影迷联名请愿要求华纳重新考虑。五天后,罗伯特·帕丁森接到导演的电话,被告知他将成为新一任“蝙蝠侠”。虽然外界有不少反对的声音,但在业内人士看来,罗伯特·帕丁森不失为“蝙蝠侠”的一个好人选。

  • win10系统声音放出来特别粗(Win10系统风扇声音太大怎么办)

    本来win10系统的占用就非常高,而p2p更新共享这个服务对于老电脑来说简直是当头一棒,所以我们最好的选择就是关闭这个服务。p2p更新共享第一步:点击菜单然后输入设置,点击进入设置。一般我们用win10的话体验都还不错,但是一个风扇过大声音可能让我们对win10系统的印象全面掉分,所以我们可以根据上面的步骤进行设置就可以解决了。目前win10系统也是最新的一款系统了,在之后的win7关闭技术支持后,win10系统将一枝独秀。

  • 五菱螺蛳粉和柳州有什么关系吗(这座城市还有五菱宏光)

    首批220辆新车投放市场,很快销售一空。其中,五菱宏光更是多年蝉联国内MPV车型细分市场销量冠军。2021年,上海以63万辆的新能源汽车产量,位居全国首位。而柳州以48.2万辆的新能源汽车年产量,顺利跻身去年新能源汽车产业第一梯队。在汽车产业方面,柳州将新能源汽车作为重点发展的方向,明确提出要推广新能源及智能网联汽车,扩大高端车型比例,提升新能源车比重。

  • 华为nova10发布会直播易烊千玺(华为Nova10真机曝光易烊千玺代言)

    今年5月底,华为正式公布Nova10系列宣传Slogan为“主角影像”,继续由老朋友易烊千玺代言,只是发布日期迟迟未能定档。需要特别说明,虽然华为曾多次定制索尼RYYB传感器,在高端影像领域站稳脚跟,获封“华为夜视仪”称号遥遥领先于友商。但自2020年9月份开始,一系列限制令双方合作被迫终止,华为无法从索尼处获得定制镜头,去年推出的华为P50系列采用公版IMX766传感器,而非独家定制。

  • 好用的昵称(好用的昵称介绍)

    西瓜-三行情书、,下面我们就来说一说关于好用的昵称?我们一起去了解并探讨一下这个问题吧!一个人骄傲的傻笑丶╮亲爱滴、你知道么多雨又闷热的夏天◎¨没人疼的孩﹌可怜么。闭眼呼吸,微笑掩饰伤痕你不懂゛我在沉默什么像个孩子一样认错烟如女、是我忘不掉的伤失心的疯狂°忽略鉨┠ヘヘ是我不对戴围裙的殿下穿拖鞋的公主罂粟花、伤那个女人//似命珍惜我以为我的温柔可以打动你

  • 穿搭简单技巧(如何穿搭的小技巧)

    穿搭简单技巧阔腿裤:阔腿裤成为时尚一大主流,很多人不喜欢阔腿裤,其实是感觉它显得矮。建议穿阔腿裤时,扎头发,披头发的话感觉整体这个人都很笨重。上身可以穿简单的长袖就可。帽子颜色可以根据衣服颜色选择,黑白比较百搭。春秋搭配牛仔裤,夏天搭配短裤或长裙。不知道如何搭配的可以购买套装,比如港风、日韩风、运动风都可。

  • 女生手链戴哪只手(女生手链戴哪只手好看)

    但对于银饰类、金饰类建议戴右手,因为左手一般用于日常工作,戴右手可以避免贵重类手链因摩擦、磕碰而损坏。如果从寓意方面来看,也应该将手镯佩戴在左手。因此人们佩戴手链、手镯等都是戴在左手,这样能够更好的吸收翡翠纯净的力量,不过这种观念对习惯左手做事的人来说则是相反的。

  • 2021宁波国考资格审查结果什么时候可以查看?附查看入口

    2021国考资格审查结果什么时候出?2021国考资格审查结果在哪里查看?一起来看!

  • 如何在水中养出丰富的竹子(怎样在水中养出丰富的竹子)

    如何在水中养出丰富的竹子水质:养殖水竹子的水可以选择纯净水,自来水也可以使用,但是一定不能使用刚从自来水管上接出来的水,里面含有大量的消毒氯气,如果想要使用,可以将自来水进行晾晒,等里面的氯气挥发掉再来使用。温度:16到25度是最适宜它生长的温度,太高或太低会对植株产生不好的影响。