IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> torch.transpose() -> 正文阅读

[人工智能]torch.transpose()

首先transpose是为了转换矩阵维度的,在numpy和pytorch中的作用都是一样的,分别举例说明:

arr = np.arange(24).reshape((2, 3, 4))
[[[ 0  1  2  3]
  [ 4  5  6  7]
  [ 8  9 10 11]]

 [[12 13 14 15]
  [16 17 18 19]
  [20 21 22 23]]]

目标:将矩阵 arr 的0维度和1维度进行交换
需要注意,transpose每次只能转换两个维度

np.transpose()

np_transpose = arr.transpose((1, 0, 2))
np_transpose = np.transpose(arr, (1, 0, 2))	# 和上一行代码操作结果一致
print(np_transpose, np_transpose.shape)

[[[ 0  1  2  3]
  [12 13 14 15]]

 [[ 4  5  6  7]
  [16 17 18 19]]

 [[ 8  9 10 11]
  [20 21 22 23]]] (3, 2, 4)

torch.transpose()

使用方法和numpy有略微不同

tensor_arr = torch.tensor(arr)
torch_transpose = tensor_arr.transpose(0, 1)
torch_transpose = torch.transpose(tensor_arr, 0, 1)	# 和上一行代码的结果一致
print(torch_transpose, torch_transpose.shape)
tensor([[[ 0,  1,  2,  3],
         [12, 13, 14, 15]],

        [[ 4,  5,  6,  7],
         [16, 17, 18, 19]],

        [[ 8,  9, 10, 11],
         [20, 21, 22, 23]]], dtype=torch.int32) torch.Size([3, 2, 4])

这里通过索引讲解一下:
在原始的矩阵 arr 中,每个元素的索引号可以表示成
[ 000 001 002 003 010 011 012 013 020 021 022 023 030 031 032 033 ] [ 100 101 102 103 110 111 112 113 120 121 122 123 130 131 132 133 ] \begin{bmatrix} 000 & 001 & 002 & 003 \\ 010 & 011 & 012 & 013 \\ 020 & 021 & 022 & 023 \\ 030 & 031 & 032 & 033 \end{bmatrix} \begin{bmatrix} 100 & 101 & 102 & 103 \\ 110 & 111 & 112 & 113 \\ 120 & 121 & 122 & 123 \\ 130 & 131 & 132 & 133 \end{bmatrix} ?????000010020030?001011021031?002012022032?003013023033???????????100110120130?101111121131?102112122132?103113123133??????
将维度为0和维度为1进行转换,那么新索引可以表示为
[ 000 001 002 003 100 101 102 103 200 201 202 203 300 301 302 303 ] [ 010 011 012 013 110 111 112 113 210 211 212 213 310 311 312 313 ] \begin{bmatrix} 000 & 001 & 002 & 003 \\ 100 & 101 & 102 & 103 \\ 200 & 201 & 202 & 203 \\ 300 & 301 & 302 & 303 \end{bmatrix} \begin{bmatrix} 010 & 011 & 012 & 013 \\ 110 & 111 & 112 & 113 \\ 210 & 211 & 212 & 213 \\ 310 & 311 & 312 & 313 \end{bmatrix} ?????000100200300?001101201301?002102202302?003103203303???????????010110210310?011111211311?012112212312?013113213313??????
将对应索引进行拼接,就是最终的 (3, 2, 4)的shape了
所以transpose更深层次的意义是将 矩阵 中数值的索引顺序改变,例:原来[0, 2] 索引的数值 2 在 transpose 后的矩阵中通过[2, 0] 索引,在高维度 tensor 通过这种理解对 transpose 操作就会更为清晰,

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章           查看所有文章
加:2022-05-06 11:03:14  更:2022-05-06 11:06:02 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 7:31:58-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码