首页 > 其他分享 >torch用法--张量操作

torch用法--张量操作

时间:2023-11-23 22:11:36浏览次数:36  
标签:11 10 12 tensor -- torch 张量

创建张量:

  • torch.tensor(data): 从数据中创建张量。用列表创建,numpy创建
  • 维度只看[ ]
# 一维张量
data_1d = [1, 2, 3]
tensor_1d = torch.tensor(data_1d)
# 结果
tensor([1, 2, 3])

  

# 二维张量
data_2d = [[1, 2, 3], [4, 5, 6],[4, 5, 6]]
tensor_2d = torch.tensor(data_2d)
#结果
tensor([[1, 2, 3],
[4, 5, 6]
[4, 5, 6]])
# 但是形状是
torch.Size([3, 3])

  

# 三维张量
tensor_3d = torch.tensor([[[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]],
                         [[13, 14, 15, 16], [17, 18, 19, 20], [21, 22, 23, 24]]])
# 结果
tensor([[[ 1,  2,  3,  4],
[ 5, 6, 7, 8],
[ 9, 10, 11, 12]],

[[13, 14, 15, 16],
[17, 18, 19, 20],
[21, 22, 23, 24]]])

  

  • torch.zeros(shape): 创建指定形状的全零张量。
  • torch.ones(shape): 创建指定形状的全一张量。
  • torch.randn(shape): 创建指定形状的随机张量。

 

张量操作:

  • tensor.size(): 返回张量的大小。形状的大小,几行几列
  • tensor.view(shape): 改变张量的形状。
# 创建一个4x3的矩阵(2维tensor)
tensor_original = torch.tensor([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]])

# 结果
tensor([[ 1,  2,  3],
        [ 4,  5,  6],
        [ 7,  8,  9],
        [10, 11, 12]])

# 使用view改变形状为3x4
tensor_reshaped = tensor_original.view(3, 4)
# 结果
tensor([[ 1,  2,  3,  4],
        [ 5,  6,  7,  8],
        [ 9, 10, 11, 12]])

  

  • torch.cat(tensors, dim): 沿指定维度拼接张量。
tensor1 = torch.tensor([[1, 2, 3], [4, 5, 6]])
tensor2 = torch.tensor([[7, 8, 9], [10, 11, 12]])

# dim=0 表示沿着第一个维度(行的方向)进行连接。
concatenated_tensor = torch.cat([tensor1, tensor2], dim=0)
tensor([[ 1,  2,  3],
        [ 4,  5,  6],
        [ 7,  8,  9],
        [10, 11, 12]])

# dim=1 表示沿着第二个维度(列的方向)进行连接。
concatenated_tensor = torch.cat([tensor1, tensor2], dim=1)
tensor([[ 1, 2, 3, 7, 8, 9],
[ 4, 5, 6, 10, 11, 12]])

  

  • tensor.item(): 获取张量中的单个元素的数值

 

数学运算:

a = torch.tensor([[1, 2, 3], [4, 5, 6]])

b = torch.tensor([[7, 8, 9], [10, 11, 12]])

tensor([[1, 2, 3],
        [4, 5, 6]])

tensor([[ 7,  8,  9],
        [10, 11, 12]])
  • torch.add(tensor1, tensor2): 张量相加。
result = torch.add(a, b)
tensor([[ 8, 10, 12],
        [14, 16, 18]])

  

  • torch.sub(tensor1, tensor2): 张量相减。
  • torch.mul(tensor1, tensor2): 张量相乘。
torch.mul(a,b)
tensor([[ 7, 16, 27],
        [40, 55, 72]])

  

  • torch.div(tensor1, tensor2): 张量相除

自动求导:

  • tensor.requires_grad_(True): 启用梯度跟踪。
  • tensor.backward(): 计算梯度。
  • tensor.grad: 获取计算得到的梯度。

标签:11,10,12,tensor,--,torch,张量
From: https://www.cnblogs.com/mxleader/p/17852613.html

相关文章

  • docker-compose部署rancher
    1.yaml文件部署version:'3'services:rancher:image:rancher/rancher:stableprivileged:truerestart:alwayscontainer_name:ranchervolumes:-./data:/var/lib/rancherports:-8080:80-8443:443envi......
  • lxl学长讲课笔记
    lxl学长讲课笔记常数种可能性的状态通过预先处理多种状态的信息,从而快速的转换状态。经典操作:flip。分析信息的思路利用线段树利用线段树的时候,如何合并两个分支区间的信息,我们需要有如下注意:答案-依赖的信息,继续的依赖,这样就能找到需要维护的东西。这终会产生闭包......
  • 框架安全
    常见框架:Spring框架Struts2框架ThinkPHP框架Shiro框架Spring框架框架特征1.ico图标是一个小绿叶2.报错页面的大标题是WhitelabelErrorPage3.X-Application-Context中会出现spring-boot字样Struts2框架框架特征1.路由以.action后缀结尾利用工具K8gege安恒......
  • 自动售货机实现
    上周的自动售货机,要求能选择商品,能显示找零金额,有1、3、5、8四种商品,接受1、2、5三种货币。我的技术细节:一次选择一个商品,金额够数就出货物闪灯,金额不够就没有反应。按reset就可以重新买输入输出商品(储存)led闪烁金额(储存)找零辉光管rst moduleautosell......
  • 每日博客
    实验19:中介者模式packagezhongjiezhe;importjava.util.*; publicclassGroupextendsAbcharroom{privateHashtablems=newHashtable();publicvoidregister(Memberm){if(!ms.contains(m)){ms.put(m.getname(),m);m.setroom(this);}}publicvoidsendtext(St......
  • 固体物理学习
    此篇写一些在复习的过程中列出的固体物理学知识可能会出现错误偶然想起来自己还有博客呢大学没勇气接着学计算机课发现物理和化学其实也挺难的每个学科都有属于自己的魅力(折磨)正好要考试了对每一章节写一些自己的感悟其实是为了万一将来要用还能来看看学的课时不多总结......
  • 2023-2024 20232319《网络空间安全导论》第2周学习总结
    思维导图教材学习过程中的问题和解决过程问题一:sm2算法和sm4算法是对称算法还是非对称算法?答案:sm2属于非对称算法,sm4属于对称算法。问题一解决方案:询问chatgpt。问题二:区块链技术与密码学的关系答案:区块链技术与密码学有着密切的关系,密码学是区块链技术的基础之一。以下是......
  • 推特引流助手
    推特引流助手:扩大社交影响力的新利器 导语:在当今社交媒体时代,推特作为全球最受欢迎的社交平台之一,已经成为人们分享观点、交流信息和建立个人品牌的重要工具。而推特引流助手则是一种能够帮助用户扩大其社交影响力、增加关注者数量的有效工具。本文将探讨推特引流助手的作用和......
  • HTB Pilgrimage
     nmap扫一下发现80和22端口开放。 改hosts文件访问域名pilgrimage.htb 直接就是一个文件上传,尝试有没有文件上传漏洞。发现无论任何类型的文件,会将所有文件重命名并加上png或jpg后缀,但从从文件上传这个点突破是有点困难的。尝试其他的方法,扫一下这个网站,看看有没有敏感......
  • 进程管理
    一、初始进程1.进程、线程和程序的区别(1)进程:进程是程序在处理机上的一次执行过程,是一个动态的概念。进程具有创建其他进程的功能,它由程序段、数据段和进程控制块三部分组成。进程具有独立性、并发性和相互制约性。同一程序可以对应多个进程,也就是说同一程序可以同时执行于若干......