pytorch学习笔记一:张量的操作与线性回归

【PyTorch】张量操作与线性回归 功能:在维度dim上,按index索引数据返回值(依index索引数据拼接的张量)功能:逐元素计算 input + alpha × other。注意事项:当张量在内存中是连续时,新张量与input。注意事项:若不能整除,最后一份张量小于其他张量。(改变一个变量时,另一个变量也会被改变)。功能:2维张量转置,对矩阵而言,等价于。功能:将张量按维度dim进行平均切分。功能:按mask中的True进行索引。功能:将张量按维度dim进行拼接。功能:将张量按维度dim进行切分。功能:交换张量的两个维度。 阅读详情

一、张量的简介

1、张量的基本概念

张量是一个【多维数组】,它是一个标量、向量、矩阵的高维拓展。
在这里插入图片描述

2、张量的属性

在 PyTorch 0.4.0 之前,torch.autograd 包中存在 Variable 这种数据类型,主要是用于封装 Tensor,进行自动求导。Variable 主要包含下面几种属性。
在这里插入图片描述
● data: 被包装的 Tensor。
● grad: data 的梯度。
● grad_fn: 创建 Tensor 所使用的 Function,是自动求导的关键,因为根据所记录的函数才能计算出导数。
● requires_grad: 指示是否需要梯度,并不是所有的张量都需要计算梯度。
● is_leaf: 指示是否叶子节点(张量)。

在 PyTorch 0.4.0 之后,Variable 并入了 Tensor。在之后版本的 Tensor 中,除了具有上面 Variable 的 5 个属性,还有另外 3 个属性。
在这里插入图片描述

  • dtype:张量的数据类型
    在这里插入图片描述
    每种类型都有CPU和GPU两个版本,张量运算必须发生在相同类型的数据之间。
  • shape:张量的形状,如(1, 3, 64, 64)
  • device:张量所在的设备,CPU/GPU,决定张量的计算在哪里进行,张量放在GPU上才能使用加速。

二、张量的创建

1、直接创建

torch.tensor():从data创建Tensor

torch.tensor(data, 
             dtype=None, 
             device=None, 
             requires_grad=False, 
             pin_memory=False) -> Tensor
  • data:数据,可以是list,也可以是numpy
  • dtype:数据类型,默认和data一致
  • device:tensor所在的设备
  • requires_grad:是否需要梯度,默认False,在搭建神经网络时需要将求导的参数设为True
  • pin_memory:是否存于锁页内存,默认False

示例:

arr = np.ones((3, 3))
print('ndarray的数据类型:',arr.dtype)

tensor_arr = torch.tensor(arr)
print(tensor_arr)

#result
ndarray的数据类型: float64
tensor([[1., 1., 1.],
        [1., 1., 1.],
        [1., 1., 1.]], dtype=torch.float64)

.from_numpy() 将ndarray转换成tensor,两者共享内存,当修改一个数据时另一个也会被修改

array_b = np.array([1, 2, 3, 4])
tensor_b = torch.from_numpy(array_b)
print(array_b)
print(tensor_b)
#result
[1 2 3 4]
tensor([1, 2, 3, 4], dtype=torch.int32)

array_b[0] = 5
print(array_b)
print(tensor_b)
#result
[5 2 3 4]
tensor([5, 2, 3, 4], dtype=torch.int32)

tensor_b[0] = 10
print(array_b)
print(tensor_b)
#result
[10  2  3  4]
tensor([10,  2,  3,  4], dtype=torch.int32)

2、依数值创建

torch.zeros()依size创建全0的张量,torch.ones()依据size创建值全为1的张量

torch.zeros(*size, 
            out=None, 
            dtype=None, 
            layout=torch.strided, 
            device=None, 
            requires_grad=False) -> Tensor
  • size:张量的形状,如(3,3)
  • layout :这个是内存中的布局形式,有strided和sparse_coo等
  • out:表示输出张量,就是再把这个张量赋值给别的一个张量,但是这两个张量时一样的,指的同一个内存地址
  • device:所在的设备,gpu/cpu
  • requires_grad:是否需要梯度
    示例:
out_t = torch.tensor([2])
t = torch.zeros((3, 3), out=out_t)
print(out_t)
print(t)
print(id(t), id(out_t), id(out_t)==id(t))
# result
tensor([[0, 0, 0],
        [0, 0, 0],
        [0, 0, 0]])
tensor([[0, 0, 0],
        [0, 0, 0],
        [0, 0, 0]])
140531404201664 140531404201664 True

torch.eye()创建对角线为1的张量

torch.eye(n, m=None, 
    out=None, 
    dtype=None, 
    layout=torch.strided, 
    device=None, 
    requires_grad=False) -> Tensor

torch.zeros_like()创建与input同shape的值全为0张量,torch.ones_like()创建与input同shape的值全为1的张量

#创建与input同shape的全1张量
torch.ones_like(input, 
          dtype=None, 
          layout=None, 
          device=None, 
          requires_grad=False, 
          memory_format=torch.preserve_format) -> Tensor
out_t = torch.tensor([1, 2, 3])
print('out_t:', out_t)

t = torch.ones((3,1), out=out_t)
print('\n')
print('t:',t)
print('out_t:', out_t)
print('id(t:):', id(t), 'id(out_t):', id(out_t), id(t)==id(out_t))

inputs = torch.tensor([[1, 2], [3, 4]])
out_ = torch.ones_like(inputs)
print('\n')
print('out_:', out_)

###result
out_t: tensor([1, 2, 3])


t: tensor([[1],
        [1],
        [1]])
out_t: tensor([[1],
        [1],
        [1]])
id(t:): 2564793927864 id(out_t): 2564793927864 True


out_: tensor([[1, 1],
        [1, 1]])

torch.full()自定义数值张量

torch.full(size, 
           fill_value,
           out=None, 
           dtype=None, 
           layout=torch.strided, 
           device=None, 
           requires_grad=False) -> Tensor
# fill_value:自定义的数值
torch.full_like(input, 
                fill_value, 
                dtype=None, 
                layout=torch.strided, 
                device=None, 
                requires_grad=False, 
                memory_format=torch.preserve_format) -> Tensor
full_t = torch
系统学习Pytorch笔记一:Pytorch的数据载体张量与线性回归 Pytorch官方英文文档:https://pytorch.org/docs/stable/torch.html? Pytorch中文文档:https://pytorch-cn.readthedocs.io/zh/latest/ 1. 写在前面 疫情在家的这段时间,想系统的学习一遍Pytorch基础知识,因为我发现虽然直接Pytorch实战上手比较快,但是关于一些内部的原理知识其实并不是太懂,这样... 阅读详情

相关推荐

TensorReg:用于张量回归的Matlab工具箱

TensorReg:用于张量回归的Matlab工具箱

Debian下Rust环境极速安装指南:国内镜像+避坑配置(附清华/中科大源对比)

本文详细介绍了在Debian系统上快速安装和配置Rust开发环境的完整指南。针对国内网络环境,重点对比评测了清华大学、中国科学技术大学等主流镜像源,提供了详细的安装配置步骤、Cargo优化技巧以及常见问题排查方案,帮助开发者显著提升依赖下载和编译效率。

s8t9u0v1w的博客 1162

WPF基础系列六:MVVM框架

MVVM框架 文章目录MVVM框架前言一、MVVM框架简介1. 什么是MVVM?2. MVVM的优势3.MVVM的应用场景二、MVVM使用及示例 前言 在WPF开发中,经典的编程模式是MVVM,是为WPF量身定做的模式,该模式充分利用了WPF的数据绑定机制,最大限度地降低了Xmal文件和CS文件的耦合度,也就是UI显示和逻辑代码的耦合度,如需要更换界面时,逻辑代码修改很少,甚至不用修改。 与WinForm开发相比,我们一般在后置代码中会使用控件的名字来操作控件的属性来更新UI,而在WPF中通常是通过

iceberg7012的博客 2万+

道岔故障监测系统设计(源码+开题)

通过实时监控道岔的工作状态,系统能够及时发现异常情况,预防潜在的安全隐患,从而减少事故发生的概率。此外,监测系统还能够为维护人员提供详细的数据支持,帮助他们更准确地判断道岔的磨损程度和故障类型,优化维修计划,延长道岔的使用寿命。随着智能化、自动化技术的发展,道岔故障监测系统的设计与应用也将推动铁路行业的技术进步,为实现智能铁路和未来交通系统的构建奠定基础。因此,开展道岔故障监测系统的设计研究,不仅具有重要的工程实践价值,也有助于推动铁路运输行业向更高水平的发展。

灵军程序设计 771

具身智能:原理、算法与系统 第18章 模仿学习与人类示范

与基于试错机制的强化学习不同,模仿学习假设存在能够提供高质量轨迹示范的专家策略,学习者的目标是在不直接访问专家内部决策机制的情况下,复现或泛化专家的行为模式。此外,选项 GAIL(Option-GAIL)将分层强化学习与对抗模仿结合,学习选项(Options)级别的策略,能够捕捉专家示范中的多模态行为与高层意图。X-Sim 框架提出从真实到模拟再到真实的迁移路径:首先从人类视频中重建物理仿真环境,在仿真中训练状态级策略,随后通过策略蒸馏获得基于视觉的策略,最后通过在线领域自适应对齐真实与仿真观测。

VectorShift的博客 125

RT-DETR模型应用过程中的报错处理及疑问解答,涉及环境搭建、模型训练、模块改进、论文写作

本文记录了RT-DETR模型的这一系列过程中可能发生的问题,以及大家非常关心的问题,这里统一做了一个记录和解答。

Limiiiing的博客 1768

把 ABAP Smart Form 输出变成可直接下载的 PDF 二进制:OTF 到 XSTRING 的一条龙实践

SAP Smart Forms 生成 PDF 的实用方案:通过 OTF 格式转换实现高效输出。Smart Forms 本身不直接生成 PDF,而是输出 OTF 格式数据,需通过 CONVERT_OTF 函数转换。本文提供两种实现路径:传统的 Spool 方式和更优的直接获取 OTF 方式,后者避免了 Spool 的维护负担。核心代码演示了如何通过设置 GETOTF 参数获取 OTF 数据,并转换为 PDF 二进制流,适用于前端下载、接口传输等场景。同时介绍了 SSF_OPEN/SSF_CLOSE 方法用于批

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 676

AD22等长布线规则

本文介绍了PCB布线中实现信号线等长的详细操作步骤:1.创建网络类(NetClass),将需要等长的信号线归入同一组;2.设置高速布线规则(High-SpeedRule),定义等长容差等参数;3.进行交互式等长布线(InteractiveLengthTuning),使用蛇形线调整线长;4.实时调整与最终检查,确保所有网络满足等长要求。文中还提供了实用技巧,如使用快捷键调整蛇形线参数、为关键信号设置更严格规则等。操作需在PCB设计软件中完成,通过统一管理、规则设置和精确调整来实现信号同步传输。

whm128的博客 1557

uni-app - 文本展开 / 收起折叠功能,支持自定义样式(当文本内容超出规定行数后,展开收起折叠的功能)兼容 H5 / App / 小程序且易用更容易修改的插件组件源码,超详细的示例代码及注释

uniapp实现文本的展开与收起功能,uniapp展开全部和收起,uniapp里文本的展开与收起,uniapp中文本内容超出规定行数后展开收起的处理,UNIAPP兼容h5、微信小程序多行文本展开或收起,uni-app中,文字超出隐藏并显示省略号(实现展开、收起全文),uni-app中文本过长-实现折叠与展开效果,中文本内容超出规定行数(字数)后展开收起的处理,超出部分...显示,uniapp适用于uniapp多行文本溢出显示...,多行文本展开或收起,uni-app-文本展开/收起折叠功能,支

🏆 前端领域优质创作者 5642

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

上一篇: pytorch开发环境的安装
下一篇: pytorch学习笔记二:动态图、自动求导及逻辑回归
Dear_林
博客等级 码龄5年 37粉丝 37原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值