
我们在学习深度学习或者线性代数数学的时候 , 肯定会听到转置这个概念 。 百科上的解释是 , 直观来看 , 将A的所有元素绕着一条从第1行第1列元素出发的右下方45度的射线作镜面反转 , 即得到A的转置 。 这个直观看起来就不那么直观 , 不过还有一句话简单扼要 , 行列互换 。
文字描述特别是数学上的定义描述 , 往往给我们的感觉是把原来我们可以明白的东西整得不明白了 。 正好创建了Pytorch的虚拟环境 , 所以我们不妨借着学习深度学习的名义来把玩一下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(546) , 再想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的计算了 。
- 创投圈|抖音小店无货源适合新手小白么?如何精细化运营?新手小白看来
- “大家好,我是渣渣辉!”,最近刷爆朋友圈的港普大家来了解一下
- 微信更新正式版!“清理缓存”功能变强,小程序终于能分享到朋友圈
- “入圈,出圈”!未来的“超级IP”将会是……
- vivo|平板圈的“战斗机”!vivo首款平板给你全方位体验
- 华为|华为高管在珠海开会,被任正非带到巨人大厦工地,沉默着转了三圈
- 创投圈|天猫618新消费持续爆发,410个新品牌成交额翻倍
- 朋友圈|后街男孩与西城男孩同台合体 联动唱《my love》等爆火:我的青春回来了
- 以太坊|币圈小将:以太坊合并之后,矿工们将何去何从?
- 创投圈|单轮性能,3060ti和3070ti有多大差距?
