首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Pytorch内置函数代码解释深度学习中的转置是什么

我们在学习深度学习或者线性代数数学的时候,肯定会听到转置这个概念。百科上的解释是,直观来看,将A的所有元素绕着一条从第1行第1列元素出发的右下方45度的射线作镜面反转,即得到A的转置。这个直观看起来就不那么直观,不过还有一句话简单扼要,行列互换。

文字描述特别是数学上的定义描述,往往给我们的感觉是把原来我们可以明白的东西整得不明白了。正好创建了Pytorch的虚拟环境,所以我们不妨借着学习深度学习的名义来把玩一下Pytorch的功能。

我们之前安装了Pytorch,也测试成功了。所以我们可以创建Tensor了,打开Ubuntu的终端,然后切换到虚拟环境,进入Python环境,开动。比如我想创建一个5*3的未初始化Tensor,命令就是x = torch.empty(5, 3)。当然我们还是创建一个有点方便的Tensor,比如创建一个随机的x = torch.rand(5, 3),这样看着舒服。也方便我们观察。

有了Tensor,我们就可以对它进行各种操作了。比如深度学习里经常用到大名鼎鼎的转置,就已经被内置到Pytorch函数了。我们可以通过t函数。上面我们创建了x的Tensor,那么想转置下,可以z_t = x.t()命令,将转置后的Tensor赋给z_t,然后打印出z_t就能看到不同了,列变行,行转列,原来是4*3,现在是3*4。就跟转个角度翻了个个一样。

另外我们要知道,转置是针对2D张量而言的,如果你创建了一个高于二维的,比如你设置x = torch.rand(5,4,6),再想x_t = x.t(),那么就会报错。系统不允许你高维转置。

当然这个只是一个非常简单的常识。不过以小见大,很多线性代数函数都已经被内置到深度学习框架Pytorch里了。比如我们可以inverse求逆矩阵。顾名思义需要是矩阵。这个对Tensor也有要求,必须是方形矩阵。比如我们可以用diag获取对角线元素。这是对单个Tensor的操作,还有的线性代数函数,则是两种Tensor的二元操作。比如内积(点积)。这个需要两个Tensor,不过它也有要求,就是必须是1D的。所以我们之前那些2D的矩阵就不能用了。我们可以创建1D的Tensor,而且个数要相同,比如创建x = torch.rand(3)和y = torch.rand(3)这样才能运行x_y = x.dot(y)命令执行内积计算,也就是a1b1+a2b2+...+anbn的计算了。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20211210A0DIDN00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券