05-线性代数
这一节课从数学上面讲一下线性代数,包括向量加减乘,模长点乘正交等内容,都学习过所以就不写了。
A.T # 表示A矩阵的转置
torch.arange(24),reshape(2,3,4) # 首先是第三维的层数,然后行数,最后是列数
B = A.clone() # 这种方法是和copy差不多,是完全的复制
A * B # 并不是矩阵的相乘,而是元素相乘,这点需要注意
2 + A # 如果是标量和矩阵进行计算,那么就是这个标量和所有的元素进行计算
A_sum0 = a.sum(axis=0) # 表示同一二维空间的三维度值相加 0是第三维度 1是行的和 2是列的和 和reshape参数位置相对应,这里最好实践一下,更有感触
A_sum_double = a.sum(axis=[0])
# 可以axis给两个维度,就是进行两个维度上的求和
A_sum1 = a.sum(axis=1, keepdims=True)
# 这样可以保证维度求和以后可以保留其原始的维度
如果上面的这个维度减少难以理解,可以看第三个视频讲解,简单说明一下例如三维(a,b,c)如果axis是0就是把a维度变成1,其他不变,如果axis是1就是把b维度变成1,如果没有keepdims参数那这个1就会自动去掉。
矩阵向量的计算。
print(torch.dot(x,y)) # 表示x y的点积 如果其中以是二维矩阵,一个是一维向量,那么结果就会是一维向量, 不管是行向量还是列向量都是一维向量没有区别
print(touch.mm(A,B)) # mm就是正常的矩阵乘法
print(torch.norm(A)) # 会得到一个标量,就是长度
print(torch,abs(a).sum()) # 绝对值后求和,也是一个标量