torch.matmul()的用法(背景:出于准备毕业论文,初学李沐前辈的动手学深度学习,也就是江湖中流传的“花书”先给大家推荐一下学习的网页)
CUDA语义 - PyTorch中文文档
https://pytorch-cn.readthedocs.io/zh/latest/notes/cuda/
这个网站封面长这样,上面就是“花书”的网页版,里面有pytorch、tensorflow等三种流行框架的实现代码,比较适合入门(我也是刚入门,菜鸟写博客,有错欢迎指正,一起学习共同进步)
推荐:pytorch中文文档
主页 - PyTorch中文文档None
https://pytorch-cn.readthedocs.io/zh/latest/朋友推荐的,目前我也只是用过一两次,大家也可以试下
写这个博客当然不是因为上面想介绍的原因,主要是因为看到里面的一部分代码不懂原理,仔细查阅之后总结一下,下面进入正题
今天主要遇到的问题是关于 花书 3.2.1中的生成数据集的pytorch代码
def synthetic_data(w, b, num_examples): #@save
"""生成 y = Xw + b + 噪声。"""
X = torch.normal(0, 1, (num_examples, len(w)))
y = torch.matmul(X, w) + b
y += torch.normal(0, 0.01, y.shape)
return X, y.reshape((-1, 1))
true_w = torch.tensor([2, -3.4])
true_b = 4.2
features, labels = synthetic_data(true_w, true_b, 1000)

跟着学习的时候发现 torch.matmul() 这个函数一直很迷糊的功能和原理,因为图中的参数 X 是 [1000,2]的张量,而参数 w 是一个一维的向量, 这个和我之前学过的矩阵运算不一样,所以有点迷糊,特别去查了一下关于 torch.matmul()的用法
查询方法是在 jupyter的notebooks中输入 help(torch.matmul) 则会出现如下说明
翻译下来大概意思就是如下:
matmul(参数1/张量1,参数2/张量2,*,输出=无)->张量
两个张量的矩阵积。
行为取决于张量的维数,如下所示:
-如果两个张量都是一维的,则返回点积(标量)。
-如果两个参数都是二维的,则返回矩阵积。
-如果第一个参数是一维的,第二个参数是二维的,为了矩阵乘法,在其维数前加上1。矩阵相乘后,将删除带前缀的维度。
-如果第一个参数是二维的,第二个参数是一维的,返回矩阵向量积。
-如果两个参数都至少是一维的,并且至少有一个参数是一维的N维(其中N>2),则返回一个批处理矩阵乘法。如果第一个参数是一维的,为便于批量矩阵乘法并在之后移除。如果第二个参数是一维的,则为了批量矩阵的目的,将1添加到其维度,并在之后删除。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)