当前位置: 首页> 汽车> 行情 > 手工制作图片作品_广州市人民政府新闻办公室发布会_aso推广_网站怎么收录

手工制作图片作品_广州市人民政府新闻办公室发布会_aso推广_网站怎么收录

时间:2025/7/10 17:01:59来源:https://blog.csdn.net/weixin_43483381/article/details/142282292 浏览次数: 0次
手工制作图片作品_广州市人民政府新闻办公室发布会_aso推广_网站怎么收录

经常会在编程中遇到理解矩阵行和列的事情。

1、要明确无论这个张量有多少维度,它的矩阵乘法都只能作用于最后两个维度。

例如:

import torcha = torch.rand([64, 32, 3, 4])
b = torch.rand([64, 32, 3, 4])c = torch.matmul(a, b.transpose(2, 3))  # 交换b的2,3两个维度print(c.shape)
# torch.Size([64, 32, 3, 3])

注意.dot方法只适用于两个向量的点积运算, torch.matmul是矩阵乘法运算。

2、对于张量的数学含义的理解

首先,一维张量不区分行向量和列向量,比如:

import torch
a = torch.rand([2, 3, 4]).view(-1)
print((a == a.T).all())
# tensor(True)

按照点积关系去理解,一维张量的数学含义是列向量:

import torch
a = torch.rand([2, 3]).view(-1)
b = torch.rand([6, 3])
print(torch.matmul(a, b))  # 1x6 dot 6x3
# tensor([0.8973, 1.0441, 1.3425])
print(torch.matmul(b, a))  # 6x3 dot 1x6
# RuntimeError: size mismatch, get 6, 6x3,6

但是如果不是一维变成二维,那么最底层向量的含义又变成了行向量:

import torch
a = torch.rand([1, 3])
b = torch.rand([3, 2])
print(torch.matmul(a, b))  
# tensor([[0.8463, 0.9703]])
3、对于二维tensor索引的理解

和list一样,依然可以按照向下x向右y的角度理解tensor的索引关系:

在这里插入图片描述

4、axis和dim的理解

首先说结论,axis和dim的含义是一致的,只不过axis来自numpy, dim来自torch。调用torch.sum()方法时可以发现axis和dim参数都一样。

接着解释dim/axis的含义:为针对变量延着哪一个轴进行操作。
假设我们取张量的第一个元素进行操作,
如果dim=0,意思是让这个元素沿着x轴进行操作(向下);
如果dim=1,意思是让这个元素沿着y轴进行操作(向右);
如果dim=2,意思是让这个元素沿着z轴进行操作(向屏幕外)
。。。

import torch
a = torch.rand([2, 3, 4])
# 沿着哪个轴哪个轴就会消失
print(a.sum(dim=0).shape)
print(a.sum(dim=1).shape)
print(a.sum(dim=2).shape)# torch.Size([3, 4])
# torch.Size([2, 4])
# torch.Size([2, 3])

在这里插入图片描述

常用的两个维度的操作分别是layer维度和batch维度:

layer维度也可以简单这么理解,假设一个张量一共m维,那么当dim=m-1时就表示把张量最里层的向量进行操作,然后逐步向外扩展。此时也可以写作dim=-1。

比如想要对张量进行batch维度的操作,那么就让dim=batch_size所在的维度即可。

注意这里的dim和axis只面向一个维度的处理(第一个元素只能沿着一个轴操作),如果想对图像等对两个维度同时处理需要区分开。

关键字:手工制作图片作品_广州市人民政府新闻办公室发布会_aso推广_网站怎么收录

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: