首页 > 其他分享 >小灰灰深度学习day6——线性代数

小灰灰深度学习day6——线性代数

时间:2023-06-03 17:35:26浏览次数:60  
标签:灰灰 day6 sum torch 矩阵 张量 线性代数 print 向量

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)

#认为列向量是向量的默认方向,可以用下标访问一个向量中的任意元素(标量的)
print(x[3])

#一个向量的长度通常称为向量的维度
print(len(x))

#当张量(只有一个轴)表示向量时,我们可以通过.shape属性访问向量的长度.
#形状是一个元素组,列出了张量沿每个轴的长度(维数),对于只有一个轴的张量
#形状只有一个元素
print(x.shape)
'''

'''
注意
向量或轴的维度被用来表示向量或轴的长度,即向量或轴的元素数量,
而张量的维度用于
表示张量具有的轴的数量.
所以可以这样说: 张量的某个轴的维数(标量的维数)就是这个轴的长度.
'''

'''
#我们可以这样创建矩阵(具有两个轴的张量)
A = torch.arange(20).reshape(5, 4)
print(A)

#矩阵的转置
B = A.T
print(B)
'''

'''
这里说一下:尽管单个向量的默认方向为列向量,但是在表示表格数据集的矩阵中,
将每个数据样本作为矩阵的行向量更为常见。
'''

#向量是标量的推广,矩阵是向量的推广。也可以说向量是一阶张量,矩阵是二阶张量
#所以张量是描述具有任意数量轴的n维数组的通用方法

#一个张量例子
'''
x = torch.arange(24).reshape(2, 3, 4)
print(x)
y = x.clone()
print(x * y) #并非矩阵相乘,而是两个矩阵对应元素分别相乘
'''

'''
#张量加上或乘以一个标量都不会改变张量的形状,其中张量的每个元素都将与标量相加或相乘
a = 2;
x = torch.arange(20).reshape(2, 10)
print((x + a).shape)
'''

'''
print(id(x))  #.clone开辟一块新内存,复制张量x的内容
print(id(y))
'''

#求和(.sum函数可以求任意形状张量的元素和)
'''
x = torch.arange(4, dtype = torch.float32)
print(x)
print(x.sum())
'''

'''
#求和时可以指定延哪个轴求和,这样可以通过求和降低维度
A = torch.arange(20, dtype = torch.float32).reshape(5, 4)
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)

#沿着行和列对矩阵求和,等同于对矩阵所有元素求和
A_sum = A.sum(axis=[0, 1])
print(A_sum)


#与求和类似,求平均值也是如此
print(A.mean())
print(A.sum() / A.numel())

print(A.mean(axis = 0))
print(A.sum(axis = 0) / A.shape[0])  #等价与上面

#非降维求和
sum_A = A.sum(axis = 1, keepdims = True)
print(sum_A)
#我们求和后不降低维度可以再进行除法等操作
print(A / sum_A)
#计算沿某个轴的累加和,且不会改变输入张量的维度
print(A.cumsum(axis = 0))
print(A)
'''

#点积
y = torch.ones(4, dtype = torch.float32)
x = torch.arange(4, dtype = torch.float32)
print(torch.dot(x, y))

#矩阵————向量积
A = torch.arange(20, dtype = torch.float32).reshape(5, 4)
x = torch.arange(4, dtype = torch.float32)
print(A)
print(x)
#A为[5][4],x为[4].将A中每个行向量与x向量点乘
print(torch.mv(A, x))

#矩阵————矩阵乘法
B = torch.ones(4, 3)
print(torch.mm(A, B))
print(A)
print(B)
#不要将矩阵乘法与哈达玛积(对应元素相乘)混淆

#范数
#非正式的说,向量的范数表示一个向量有多大.这里的大小不涉及维度,而是分量的大小
u = torch.tensor([3.0, -4.0])
print(torch.norm(u)) #L2范数:平方和开根号

print(torch.abs(u).sum())  #L1范数:向量元素绝对值之和

#弗罗贝尼乌斯范数(具有向量范数的所有性质,就像矩阵型向量的L2范数):
#为矩阵元素平方和的平方根
print(torch.norm(torch.ones((4, 9))))

 

标签:灰灰,day6,sum,torch,矩阵,张量,线性代数,print,向量
From: https://www.cnblogs.com/fighting-huihui/p/17454277.html

相关文章

  • 小灰灰深度学习day5——数据预处理
    内容简介:1.将数据写入.csv文件中    2.将数据从.csv文件中读出  3.利用插值法处理缺失的数据  4.将数据类型转化为torch张量类型代码如下:importosos.makedirs(os.path.join('..','data'),exist_ok=True)data_file=os.path.join('..','data','house_......
  • python day6
    第一阶段第六章6.1数据容器 6.2列表列表中元素类型不限,可以混合 ["itheima",888,True]1#列表里面嵌套列表2my_list=[[1,2,3],[4,5,6]]3print(my_list)4print(type(my_list))6.3列表遍历下标定义可以反向 #列表里面嵌套列表取数据my_......
  • 小灰灰深度学习day4——数据操作之张量(torch)
    震惊了!!!在python中,y=x+y;与y+=x;竟然有区别,且看如下代码:importtorch'''x=torch.arange(12)print(x)#reshape可以改变张量的形状而不改变元素的数量和元素值X=x.reshape(-1,3)print(X)#shape属性可以访问元素的张量的形状print(X.shape)#numel()得到张量......
  • 小灰灰机器学习day3——多项式拟合(最高项系数为2)
    importnumpyasnpTime=np.array([1,2,4,8,16,32,64])Temp=np.array([0,1,2,3,4,5,6])importmatplotlib.pyplotaspltplt.figure()plt.plot(Time,Temp,'bo')plt.xlabel("Time")plt.ylabel("Temp")plt.title(�......
  • 小灰灰机器学习day2——构造线性回归器
    filename="Ve.txt"x=[]y=[]withopen(filename,'r')asf:forlineinf.readlines():xt,yt=[float(i)foriinline.split(',')]x.append(xt)y.append(yt)num_training=int(0.5*len(x)......
  • 【安全学习之路】Day6
    ......
  • MySQL学习基础篇Day6
    5.多表查询我们之前在讲解SQL语句的时候,讲解了DQL语句,也就是数据查询语句,但是之前讲解的查询都是单表查询,而本章节我们要学习的则是多表查询操作,主要从以下几个方面进行讲解。5.1多表关系项目开发中,在进行数据库表结构设计时,会根据业务需求及业务模块之间的关系,分析并设计表......
  • 代码随想录Day6
    链表的复习章节  哈希的概念和应用:https://programmercarl.com/哈希表理论基础.html#哈希函数当我们想使用哈希法来解决问题的时候,我们一般会选择如下三种数据结构。数组set(集合)map(映射)这里数组就没啥可说的了,我们来看一下set。 Leetcode242时间复杂度O(N......
  • day69(2023.5.10)
    第四阶段--网页编程和设计(一)HTML5day571.第一个前端程序2.前端工具的选择与安装3.VScode开发者工具快捷键4.HTML5简介与基础骨架5.标签之标题6.标签之段落、换行、水平线7.标签之图片8.图片路径详解9.标签之超文本链接10.标签之文本11.列表标签之有序列表12.列表标签之无序列表13......
  • day68(2023.5.9)
    1.jQuery遍历先用js来遍历一下 运行结果: 运行结果: 运行结果: 运行结果: ......