首页 > 其他分享 ># 机器学习day05

# 机器学习day05

时间:2024-06-21 20:09:34浏览次数:11  
标签:机器 tensor numpy torch 张量 day05 学习 print data

张量元素类型转换

  1. data.type(torch.DoubleTensor)
 data = torch.full([2, 3], 10)
 print(data.dtype)
 # 将 data 元素类型转换为 float64 类型
data = data.type(torch.DoubleTensor)
 print(data.dtype)
 # 转换为其他类型
# data = data.type(torch.ShortTensor)
 # data = data.type(torch.IntTensor)
 # data = data.type(torch.LongTensor)
 # data = data.type(torch.FloatTensor)
  1. data.double()
data = torch.full([2, 3], 10)
 print(data.dtype)
 # 将 data 元素类型转换为 float64 类型
data = data.double()
 print(data.dtype)
 # 转换为其他类型
# data = data.short()
 # data = data.int()
 # data = data.long()
 # data = data.float()

1.1张量转换为NumPy数组

​ 使用 Tensor.numpy 函数可以将张量转换为 ndarray数组,但是共享内存, 可以使用 copy 函数避免共享。

# 1.将张量转换为 numpy数组
data_tensor= torch.tensor([2, 3, 4])
 # 使用张量对象中的 numpy函数进行转换
data_numpy = data_tensor.numpy()
 print(type(data_tensor))
 print(type(data_numpy))
 # 注意: data_tensor和 data_numpy共享内存
# 修改其中的一个,另外一个也会发生改变
# data_tensor[0] = 100
 data_numpy[0] = 100
 print(data_tensor)
 print(data_numpy)
#2.对象拷贝避免共享内存
data_tensor= torch.tensor([2, 3, 4])
 # 使用张量对象中的 numpy函数进行转换,通过copy方法拷贝对象
data_numpy = data_tensor.numpy().copy()
 print(type(data_tensor))
 print(type(data_numpy))
 # 注意: data_tensor和 data_numpy此时不共享内存
# 修改其中的一个,另外一个不会发生改变
# data_tensor[0] = 100
 data_numpy[0] = 100
 print(data_tensor)
 print(data_numpy)

​ 使用from_numpy()可以将ndarray数组转换为Tensor,共享内存,使用copy()函数避免共享

data_numpy = np.array([2, 3, 4])
 # 将 numpy 数组转换为张量类型
# 1. from_numpy
 # 2. torch.tensor(ndarray)
 data_tensor = torch.from_numpy(data_numpy)
 # nunpy 和 tensor 共享内存
# data_numpy[0] = 100
 data_tensor[0] = 100
 print(data_tensor)
 print(data_numpy)

​ 使用torch.tensor()可以将ndarray数组转换为Tensor,不共享内存。

data_numpy = np.array([2, 3, 4])
 data_tensor = torch.tensor(data_numpy)
 # nunpy 和 tensor 不共享内存
# data_numpy[0] = 100
 data_tensor[0] = 100
 print(data_tensor)
 print(data_numpy)

​ 对于只有一个元素的张量,使用item()函数将该值从张量中提取出来

# 当张量只包含一个元素时, 可以通过 item() 函数提取出该值
data = torch.tensor([30,])
 print(data.item())
 data = torch.tensor(30)
 print(data.item())

总结

  1. 张量转换为 numpy数组
  • data_tensor.numpy()
  • data_tensor.numpy().copy()
  1. numpy 转换为张量
  • torch.from_numpy(data_numpy)
  • torch.tensor(data_numpy)
  1. 标量张量和数字转换
  • data.item()

1.2张量数值计算

加减乘除取负号:(不会修改原数据)

add、sub、mul、div、neg

add_、sub_、mul_、div_、neg_(其中带下划线的版本会修改原数据)

data = torch.randint(0, 10, [2, 3])
 print(data)
 # 1. 不修改原数据
new_data= data.add(10)  # 等价 new_data= data + 10
 print(new_data)
 # 2. 直接修改原数据 注意: 带下划线的函数为修改原数据本身
data.add_(10)  # 等价 data += 10
 print(data)
 # 3. 其他函数
print(data.sub(100))
 print(data.mul(100))
 print(data.div(100))
 print(data.neg())

1.2.1点乘指(Hadamard)的是两个同维矩阵对应位置的元素相乘,使用mul和运算符 * 实现。

6124f2470626839e370f9ed38457e8a

data1 = torch.tensor([[1, 2], [3, 4]])
 data2 = torch.tensor([[5, 6], [7, 8]])
 # 第一种方式
data = torch.mul(data1, data2)
 print(data)
 # 第二种方式
data = data1 * data2
 print(data)

1.2.2矩阵乘法运算

矩阵乘法运算要求第一个矩阵 shape: (n, m),第二个矩阵 shape: (m, p), 两个矩阵点积运算 shape 为: (n, p)。

  1. 运算符 @ 用于进行两个矩阵的乘积运算
  2. torch.matmul 对进行乘积运算的两矩阵形状没有限定.对数输入的 shape 不同的张量, 对应的最后几个维度必须符 合矩阵运算规则
# 点积运算
data1 = torch.tensor([[1, 2], [3, 4], [5, 6]])
 data2 = torch.tensor([[5, 6], [7, 8]])
 # 方式一:
 data3 = data1 @ data2
 print("data3-->", data3)
 # 方式二:
 data4 = torch.matmul(data1, data2)
 print("data4-->", data4)

标签:机器,tensor,numpy,torch,张量,day05,学习,print,data
From: https://www.cnblogs.com/czyhyym/p/18261277

相关文章

  • nodejs从基础到实战学习笔记-模块化、包
    二、模块化2.1什么是模块化模块化是指解决一个复杂问题时,自顶向下逐层把系统划分成若干模块的过程。对于整个系统来说,模块是可组合、分解和更换的单元。2.1.1把代码进行模块化拆分的好处提高了代码的复用性提高了代码的可维护性可以实现按需加载•如果程序设计的规......
  • 最详细的JS学习笔记(连载)第二章、数组方法(删除)
    数组删除(1)数组.pop() 移除最后一个元素,并返回移除该元素值  参数:无        返回值:被删除的那个元素           原有的数组改变letary=[10,20,30]varres=ary.pop();console.log(res,ary)   //res=>30  ary=>[10,20]基于原......
  • 零基础学习python-1.安装python
    1.安装python众所周知,若想学习python就得有一台电脑,如果手机端的同学也想玩python编程的话,那我建议你安装一个QPython玩玩就可以,若是想跟深度学习,那请各位少爷小姐们,一同跟随我,一步步教会你安装python及其编译器第一步.找python官网注意:请识别官网,python是免费的,别选错了......
  • 深度学习原理
    目录一、简介 二、用一个求函数表达式的问题解析深度学习原理2.1线性和非线性函数2.1.1线性函数(LinearFunction)2.1.2非线性函数(Non-linearFunction)2.2深度学习原理2.2.1函数分段2.2.2引入非线性函数2.2.3非线性函数图形变换2.2.4线性操作与非线性操作示......
  • ch10 降维与度量学习
    降维的动机从k-近邻算法的角度看降维如果给定测试样本\(x\)与最近邻样本\(z\),那么正确率就为\[P(acc)=P(c_1=c_2|x,z)=\sum{c\in\mathcal{C}}P(c_1=c_2=c|x,z)=\sum_{c\in\mathcal{C}}P(c_1=c|x)P(c_2=c|z)\]如果在度量空间中满足密采样假......
  • 初中各科学习方法和技巧,家长不妨收藏起来,请转告孩子!
      在孩子的学习生涯中,初中是一个至关重要的阶段。随着知识难度的加深和学科的增多,很多学生会出现跟不上班级进度的情况。这时候,作为家长,我们需要关注孩子的学习状况,并采取有效的措施来帮助他们。为了更好地指导孩子学习www.zjia8.com本文将分享初中各科的学习方法和技巧家......
  • 孩子学习差还不努力,父母坚持“1效应4招”,让宝宝主动爱上学习
      在学校里不难发现,成绩好的人往往能越学越好,而成绩差的人却往往陷入一种恶性循环。  因为听不懂、跟不上,就会导致成绩不好,新的知识还没讲明白,更别说谈把过去欠缺的知识点补回来了。时间一长每天都像在努力学习,但不会的知识点越来越多,成绩也是没有一点起色。这就是学......
  • 强化学习(Reinforcement Lrarning,RL)02:马尔科夫决策过程
    强化学习(ReinforcementLrarning,RL)02:马尔科夫决策过程强化学习(ReinforcementLrarning,RL)02:马尔科夫决策过程状态与状态空间动作与动作空间策略函数状态转移与状态转移函数奖励轨迹回报与折扣回报一个重要性质强化学习(ReinforcementLrarning,RL)02:马尔科夫决策过程马......
  • 游戏AI的创造思路-技术基础-机器学习(2)
    本篇存在大量的公式,数学不好的孩子们要开始恶补数学了,尤其是统计学和回归方程类的内容。小伙伴们量力而行~~~~~游戏呢,其实最早就是数学家、元祖程序员编写的数学游戏,一脉相承传承至今,囊括了更多的设计师、美术家、音乐家、作家、导演、演员等等,发展形成了今天大家看到的繁花......
  • Python学习之爬虫简单例子
    importBeautifulSoupimportpandasaspdimporturllib.request,urllib.errordefrequestUrl(url):  headers={    'User-Agent':"Mozilla/5.0(Macintosh;IntelMacOSX10_14_6)AppleWebKit/537.36(KHTML,likeGecko)Chrome/81.0.404......