动手学深度学习——线性代数的实现

"""
标量由只有一个元素的张量(Tensor)表示
"""
import torch
x=torch.tensor([3.0])
y=torch.tensor([2.0])
print(x+y)
print(x*y)
print(x/y)
print(x**y)
"""
你可以将向量视为标量值组成的列表
"""
x=torch.arange(4)
print(x)
"""
通过张量(Tensor)的索引来访问任一元素
"""
print(x[3])
"""
访问张量(Tensor)的长度
"""
print(len(x))
"""
只有一个轴的张量(Tensor),形状只有一个元素
"""
print(x.shape)

动手学深度学习——线性代数的实现

 

"""
通过指定的两个分量m和n来创建一个形状为mxn的矩阵(matrix)
"""
A=torch.arange(20).reshape(5,4)
print(A)
"""
矩阵(matrix)的转置
"""
print(A.T)
"""
对称矩阵(matrix)A等于其转置矩阵(matrix)
"""
B=torch.tensor([[1,2,3],[2,0,4],[3,4,5]])
print(B)
print(B==B.T)

动手学深度学习——线性代数的实现

"""
就像向量是标量的推广,矩阵(matrix)是向量的推广一样,我们可以构建具有更多轴的数据结构
"""
X=torch.arange(24).reshape(2,3,4)
print(X)
"""
给定任何相同形状的任何两个张量(Tensor),任何按元素二元运算的结果都将是相同形状的张量(Tensor)
"""
A=torch.arange(20,dtype=torch.float32).reshape(5,4)
B=A.clone() #通过分配新内存,将A的一个副本分配给B
print(A)
print(A+B)

 

动手学深度学习——线性代数的实现

 

"""
两个矩阵(matrix)的按元素乘法称为 哈达玛积
"""
print(A*B)
a=2
X=torch.arange(24).reshape(2,3,4)
print(a+X)
print((a*X).shape)
"""
计算其元素的和
"""
x=torch.arange(4,dtype=torch.float32)
print(x)
print(x.sum())
"""
表示任意形状张量(Tensor)的元素和
"""
A=torch.arange(20*2).reshape(2,5,4)
print(A.shape)
print(A.sum())
"""
指定求和汇总张量(Tensor)的轴
"""
A_sum_axis0=A.sum(axis=0)
print(A_sum_axis0)
print(A_sum_axis0.shape)
A_sum_axis1=A.sum(axis=1)
print(A_sum_axis1)
print(A_sum_axis1.shape)
print(A.sum(axis=[0,1]).shape)

动手学深度学习——线性代数的实现

"""
计算总和或均值时保持不变(invariant)
"""
sum_A=A.sum(axis=1,keepdims=True)
print(sum_A)
"""
通过广播(broadcasting)将A除以sum_A
"""
print(A/sum_A)
"""
某个轴计算A元素的累计总和
"""
print(A.cumsum(axis=0))
"""
点积(dot product)是相同位置的按元素乘积的和
"""
x=torch.arange(4,dtype=torch.float32)
y=torch.ones(4,dtype=torch.float32)
print(x)
print(y)
print(torch.dot(x,y)) # x,y求点积(dot product)
"""
我们可以通过执行按元素乘法,然后进行求和来表示两个向量的点积(dot product)
"""
print(torch.sum(x*y))

 

动手学深度学习——线性代数的实现

"""
范数(Frobenius norm)是向量元素平方和的平方根(L2范数(Frobenius norm))
"""
u=torch.tensor([3.0,-4.0])
print(torch.norm(u))
"""
L1范数(Frobenius norm)它表示为向量元素的绝对值之和
"""
print(torch.abs(u).sum())
"""
矩阵(matrix)的弗罗贝尼乌斯范数(Frobenius norm)是矩阵(matrix)元素的平方和的平方根
"""
print(torch.norm(torch.ones((4,9))))

 

动手学深度学习——线性代数的实现

 

版权声明:本文为博主橙子吖21原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/qq_42012782/article/details/121345048

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
xiaoxingxing的头像xiaoxingxing管理团队
上一篇 2021年11月22日 下午6:20
下一篇 2021年11月22日 下午6:51

相关推荐