概述
import torch
# 标量由只有一个元素的张量表示
x = torch.tensor(3.0)
y = torch.tensor(2.0)
print(x + y, x * y, x / y, x**y)
# 向量就是标量组成的列表
x = torch.arange(4)
print(x)
print(x[3])
# 访问张量的长度以及形状
print(len(x))
print(x.shape)
# 指定两个分量m,n来创建一个形状为m*n的矩阵
A = torch.arange(20, dtype=torch.float32).reshape(5, 4)
print(A)
# 矩阵的转置
print(A.T)
# 对称矩阵A等于其转置
B = torch.tensor([[1, 2, 3], [2, 0, 4], [3, 4, 5]])
print(B)
print(B == B.T)
# 两个矩阵的按元素乘法叫哈达玛积
B = A.clone()
print(A*B)
X = torch.arange(24, dtype=torch.float32).reshape(2, 3, 4)
a = 2
print(a + X, (a*X).shape)
print(A.sum())
# 指定求和汇总张量的轴
Y = torch.arange(40.0).reshape(2, 5, 4)
print(Y)
# torch.Size([2, 5, 4])
# 分别对应轴 0 1 2
Y_sum_axis0 = Y.sum(axis=0)
# 对序号为0的轴求和,得到的矩阵的size为(5,4)
print(Y_sum_axis0)
Y_sum_axis1 = Y.sum(axis=1)
# 对序号为1的轴求和,得到的矩阵的size为(2,4)
print(Y_sum_axis1)
# 前面两个轴相加,因为是一个三维数组,所以得到的是一个向量
print(Y.sum(axis=[0, 1]))
# 求平均值
print(Y.sum()/Y.numel(), Y.mean())
print(Y.mean(axis=0))
print(Y.sum(axis=0)/Y.shape[0])
# sum(axis=0)会减少矩阵的维度 keepdims=True使得计算总和均值时轴数不变,才可使用广播机制
sum_Y = Y.sum(axis=0, keepdims=True)
print(sum_Y)
print(Y)
print(Y / sum_Y)
# 累加 eg.按行/列累加,第二行等于第一行加第二行
print(Y.cumsum(axis=0))
# 向量的点积
N = torch.tensor([0.0, 1, 2, 3])
M = torch.ones(4, dtype=torch.float32)
print(torch.dot(N, M))
print(A)
# 矩阵和向量相乘,在pytorch中此时向量为列向量,若要讨论size是[1,4]还是[4,1]则讨论的是矩阵
print(A.shape)
a = torch.tensor([1.0, 2, 3, 4])
print(a.shape)
print(torch.mv(A, a))
# 矩阵和矩阵相乘
B = torch.ones(4, 3)
print(torch.mm(A, B))
# 向量的范数
# L2范数:向量元素平方和开根号
u = torch.tensor([3.0, -4.0])
print(torch.norm(u))
# L1范数:对向量中的元素取绝对值求和
print(torch.abs(u).sum())
# 矩阵的范数
# Frobenius范数:矩阵元素平方和的平方根
print(torch.norm(torch.ones(4, 9)))
最后
以上就是单薄小伙为你收集整理的深度学习之线性代数代码部分的全部内容,希望文章能够帮你解决深度学习之线性代数代码部分所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复