线性代数 pytorch

A = torch.arange(20, dtype=torch.float32).reshape(5, 4)
(tensor([[ 0.,  1.,  2.,  3.],
         [ 4.,  5.,  6.,  7.],
         [ 8.,  9., 10., 11.],
         [12., 13., 14., 15.],
         [16., 17., 18., 19.]]),
B = A.clone()  # 通过分配新内存,将A的一个副本分配给B
A * B#对应元素相乘
x = torch.arange(4, dtype=torch.float32)
x.sum()#对张量的元素进行求和
A_sum_axis0 = A.sum(axis=0)#对所有行的元素来求和降维
A_sum_axis0, A_sum_axis0.shape
#结果为 (tensor([40., 45., 50., 55.])
A.numel()#求A中元素数量
A.mean(axis=0)#对列求和,在求平均值, A.sum(axis=0) / A.shape[0]#表示矩阵的行数

#调用函数来计算总和或均值时保持轴数不变会很有用
sum_A = A.sum(axis=1, keepdims=True)
#结果为tensor([[ 6.],
#        [22.],
#        [38.],
#        [54.],
#       [70.]])
A.cumsum(axis=0)
#结果为:tensor([[ 0.,  1.,  2.,  3.],
#       [ 4.,  6.,  8., 10.],第一行加第二行
#        [12., 15., 18., 21.],第三行加第二行
#        [24., 28., 32., 36.],  .....
#        [40., 45., 50., 55.]])  ...

y = torch.ones(4, dtype = torch.float32)
x, y, torch.dot(x, y)#同torch.sum(x * y)
#结果:(tensor([0., 1., 2., 3.]), tensor([1., 1., 1., 1.]), tensor(6.))

A.shape, x.shape, torch.mv(A, x)#矩阵-向量积
结果为:tensor([ 14.,  38.,  62.,  86., 110.])
#L2范数是向量元素平方和的平方根
u = torch.tensor([3.0, -4.0])
torch.norm(u)#结果为5
#L1范数向量元素的绝对值之和
torch.abs(u).sum()
#Frobenius范数(Frobenius norm)是矩阵元素平方和的平方根
torch.norm(torch.ones((4, 9)))#结果为 6

自动求导例题:
import torch
import numpy as np
import matplotlib.pyplot as plt

x=torch.arange(0.,10.,0.1)
print(x)
x.requires_grad_(True)
x1=x.detach()#x在进行求导之后,值就会发生变化,提前为绘图保存一下
y=torch.sin(x)
print(y)
y.sum().backward()
plt.plot(x1,x.grad)
plt.show()








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Python中,线性代数是一个重要的领域,可以使用一些库来进行线性代数的计算和操作。在学习线性代数的基础知识时,可以涉及到一些概念和技术,如张量算法的基本性质、降维与非降维的求和、点积、矩阵-向量积、矩阵-矩阵乘法以及范数等。 在Python中,可以使用NumPy库来进行线性代数的计算和操作。例如,可以使用NumPy的ndarray对象来表示向量和矩阵,并使用相应的函数和操作来进行计算。对于张量算法的基本性质,可以使用NumPy的函数来实现相应的功能。 另外,还可以使用其他库,如PyTorch,来进行线性代数的计算。在PyTorch中,可以使用torch.tensor对象来表示向量和矩阵,并使用torch.norm函数来计算向量的范数。 总之,Python提供了各种库和函数来进行线性代数的计算和操作,可以根据具体的需求来选择适合的方法和工具。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Python中线性代数的相关基础知识](https://blog.csdn.net/weixin_43589205/article/details/126706770)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值