指 两个矩阵的按元素乘法:数学符号⊙;
python运算:A*B
A = torch.arange(20, dtype=torch.float32).reshape(5, 4)
B = A.clone()
A,B,A*B
A_sum_axis0 = A.sum(axis = 0)
A_sum_axis0, A_sum_axis0.shape
按axis = 0降维后,轴0消失,只剩下轴1的维数(即列数4)
A_sum_axis1 = A.sum(axis = 1)
A_sum_axis1, A_sum_axis1.shape
按axis = 1降维后,轴1消失,只剩下轴0的维数(即行数5)
A.mean(), A.sum() / A.numel()
A.mean(axis = 0),A.sum(axis = 0)/A.shape[0]
A.sum(axis=1, keepdims=True)
A.cumsum(axis = 0)
两种方法:
x = torch.arange(4, dtype=torch.float32)
y = torch.ones(4, dtype=torch.float32)
x,y,torch.dot(x,y)
torch.sum(x*y), (x*y).sum()
A.shape, x.shape, torch.mv(A, x)
B = torch.ones(4, 3)
A.shape, B.shape, torch.mm(A, B)
u = torch.tensor([3.0, -4.0])
L1 = torch.abs(u).sum()
L1
u = torch.tensor([3.0, -4.0])
L2 = torch.norm(u)
L2
矩阵元素平方和的平方根,类似于向量的L2范数,直接用torch.norm(矩阵)。
K = torch.ones((2, 8))
K, torch.norm(K)
在深度学习中,解决优化问题时,目标函数,通常被表达为范数。比如:
7.考虑一个具有形状(2, 3, 4)的张量,在轴0、1、2上的求和输出是什么形状?
X = torch.randint(1,10,(2,3,4))
Y = torch.sum(X,axis = 0)
X,Y, Y.shape
按第一个维度进行加法运算,运算后第一个维度被消除,得到3x4的矩阵
X = torch.randint(1,10,(2,3,4))
Y = torch.sum(X,axis = 1)
X,Y, Y.shape
对两个矩阵分别对所有行求和,每个矩阵被压缩为一个1x4的向量。
4+7+1=12,8+3+9=20,6+9+1=16,2+5+5=12
所以有行向量[12,20,16,12]
Y = torch.sum(X,axis = 2,)
X,Y, Y.shape
4+8+6+2=20;
7+3+9+5=24;
1+9+1+5=16;所以得到[20,24,16]
axis = 2且保持轴数不变的话:
8. 为linalg.norm函数提供3个或更多轴的张量,并观察其输出。对于任意形状的张量这个函数计算得到什么
X = torch.ones(2,3,6)
L2 = torch.norm(X)
X,L2