pytorch中的矩阵的转置问题

这篇具有很好参考价值的文章主要介绍了pytorch中的矩阵的转置问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

我在我的pytorch专栏发布了一期pytorch入门之tensor,介绍了torch.tensor()的一些创建方式和常用方法,其中就有矩阵的转置方法----tensor.t()、tensor.transpose()和tensor.permute()。我只是用少量语言和代码介绍了这三种方法的用法,但其中的转置原理没有说清。今天咱们就来絮叨絮叨~

相信学过线性代数的小伙伴对矩阵的转置不会太陌生,对于一个m*n二维矩阵A,它的转置原理如下:

转置前
pytorch中的矩阵的转置问题
转置后
pytorch中的矩阵的转置问题

简单来说,就是把这个矩阵的行数据转换为列数据。tensor.t()就是这样的原理。但对于tensor而言,它可以有许多的维度,二维矩阵用torch.tensor()表示如下:

a = torch.tensor(np.arange(24).reshape([4, 6]))
print(a)

pytorch中的矩阵的转置问题

上图就是一个二维的矩阵,与数学上的矩阵表示有所不同。它的最外边的中括号代表的维度用“0”表示,里面的括号代表的维度用“1”表示。这种表示我们用三阶张量来表示更明显一些。

a = torch.tensor(np.arange(24).reshape([2, 3, 4]))
print(a)
print(a.size(0))
print(a.size(1))
print(a.size(2))

pytorch中的矩阵的转置问题
如果不清楚tensor.size()用法可以看我的pytorch入门之tensor

因为三阶张量的转置无法使用tensor.t(),所以接下来的转置原理的解释都是用tensor.transpose()来演示。

三阶张量的转置

我们先创建一个三阶张量,以这个三阶张量来演示0维、1维和2维两两之间的转置是怎样的

import torch
import numpy as np
example = torch.tensor(np.arange(24).reshape([2, 3, 4]))

注释:这个三阶张量是由2个3行4列的矩阵构成,tensor.transpose()括号里的0,1,2分别对应torch.tensor(np.arange(24).reshape([2, 3, 4]))的[]里面的2,3,4。下面先来展示一下结果

print(example)
print(example.size(0))
print(example.size(1))
print(example.size(2))

pytorch中的矩阵的转置问题

0代表三阶张量最外边的括号,1代表中间的括号,2代表最里层的括号。

  1. tensor.transpose(0, 1)2和3互换,tensor.size() == torch.Size([3,2,4])

    example1 = torch.tensor(np.arange(24).reshape([2, 3, 4]))
    print(example1)
    example2 = example1.transpose(0, 1)
    print(example2)
    

    pytorch中的矩阵的转置问题

  2. tensor.transpose(0, 2)2和4互换,tensor.size() == torch.Size([4,3,2])

    	example1 = torch.tensor(np.arange(24).reshape([2, 3, 4]))
    	print(example1)
    	example2 = example1.transpose(0, 2)
    	print(example2)
    

    pytorch中的矩阵的转置问题

  3. tensor.transpose(1, 2)3和4互换,tensor.size() == torch.Size([2,4,3])

    example1 = torch.tensor(np.arange(24).reshape([2, 3, 4]))
    print(example1)
    example2 = example1.transpose(1, 2)
    print(example2)
    

    pytorch中的矩阵的转置问题文章来源地址https://www.toymoban.com/news/detail-405389.html

到了这里,关于pytorch中的矩阵的转置问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包