线性代数。
作者:互联网
目录
A.sum(axis=0) //按行降维,即按行求和A.sum(axis=1) //按列
numpy.cumsum(a, axis=None, dtype=None, out=None)
深拷贝clone(),浅拷贝detach()方法
import torch A=torch.tensor([[1,2,3],[2,2,2],[3,3,3]]) print(A) B=A.clone() # 通过分配新内存,将A的一个副本分配给 print(B) print(A+B) print(A*B)
detach()方法 得到一个和源张量共享内存,但没有梯度信息的张量,不参与计算图的梯度计算
clone()方法 开辟新内存空间,其值和源张量一样,参与计算图中梯度计算并可将梯度信息传递到源张量进行累积,但通过clone方法得到的张量其只是一个中间值,梯度为None
(2条消息) pytorch中detach()和clone()的区别_九袋面的博客-CSDN博客
import torch a = torch.tensor(2.0, requires_grad=True) b = a.clone() # 参与计算图梯度计算,但是和a不是同一内存,改变b值不影响a值,b=2 c = a.detach() # 不参与计算图的计算,和a是同一内存引用,改变c值影响a值,c=2 c += 1.0 #c=a=3 b = b ** 2 + 3 * b #b=4+6=10 print(a) print(b) # b单独开辟空间,b=10.,同时引入计算图: # b= b**2+3*b = (a_clone)** 2+ 3*(a_clone) (这里b是对值为2.的tensor a 的拷贝) print(c) # c=3.
两个矩阵的按元素乘法称为哈达玛积
print(A*B)
标量*矩阵
print(A*2)
矩阵求和
降维求和
A.sum()
等价于
A.sum(axis=[0, 1])
可计算
表示长度为dd的向量中元素的总和
任意形状张量的元素和
将A降成了一个标量
A.sum(axis=0) //按行降维,即按行求和
A.sum(axis=1) //按列
c=A.sum(axis=0)
print(c.shape) #看维度变化
平均值
mean()
A.sum() / A.numel()
print(A.float().mean())
print(A.sum()/A.numel())
非降维求和
numpy.cumsum(a, axis=None, dtype=None, out=None)
1)np.cumsum() //当成一维数组求和
>>> a = np.array([[1,2,3], [4,5,6]])
>>> a
array([[1, 2, 3], [4, 5, 6]])
>>> np.cumsum(a)
array([ 1, 3, 6, 10, 15, 21]) #1,1+2,1+1+2,1+1+2+3,....
2)np.cumsum(axis=0) //按行求和,实际竖着依次累加
>>> np.cumsum(a,axis=0)
array([[1, 2, 3], [5, 7, 9]]) #1,2,3 #1+4,2+5,3+6
3)np.cumsum(a,axis=1) //列,实际行
array([[ 1, 3, 6],
[ 4, 9, 15]])
#1,1=2,1+2+3
#4,4+5,4+5+6
4)np.cumsum(a, dtype=float) #指定输出类型
矩阵相乘
矩阵相乘torch.mm(), torch.bmm()
torch.mm()实现两个矩阵相乘
torch.bmm()可实现批量矩阵相乘,强制规定维度和大小相同
与线性代数中乘法计算一致
import torch
A=torch.tensor([[1,2,3],[2,2,2],[3,3,3]])
print(A)
b=torch.tensor([[1,2],[2,1],[1,1]])
print(b)
print(torch.mm(A,b))
哈达玛积:矩阵点积torch.mul(a, b)
矩阵a和b对应位相乘,a的一行一列与b的一行一列相成
a和b的维度必须相等,比如a的维度是(1, 2),b的维度是(1, 2),返回的仍是(1, 2)的矩阵;
c=torch.tensor([[1,2],[1,1],[2,1]])
print(c)
print(torch.mul(b,c))
向量点积 torch.dot(a, b),结果是个数
a(x1,y1) b(x2,y2)
ab=x1*x2+y1*y2
EG:
x(1,2)
y(2,3)
xy=1*2+2*3=8
x=torch.tensor([1,2]) #1D向量括号里一对【】
y=torch.tensor([2,3])
print(torch.dot(x,y))
向量*矩阵torch.mv(A, x)
参数必为矩阵、向量
类似torch.mm()
print(x)
print(torch.mv(c,x))
标签:sum,torch,矩阵,线性代数,print,cumsum,axis 来源: https://blog.csdn.net/ngc2244/article/details/120422188