【python、pytorch】

news2024/11/13 9:27:19

什么是Pytorch

Pytorch是一个基于Numpy的科学计算包,向它的使用者提供了两大功能。作为Numpy的替代者,向用户提供使用GPU强大功能的能力。做为一款深度学习的平台,向用户提供最大的灵活性和速度。

基本元素操作

Tenors张量:张量的概念类似于Numpy中的ndarray数据结构,最大的区别在于Tensor可以利用
GPU的加速功能。

引用

from __future__ import print_function
import torch

创建矩阵 

未初始化矩阵 (脏数据)

x=torch.empty(5,3)

初始化矩阵 

x=torch.rand(5,3)

全零矩阵

x=torch.zeros(5,3,dtype=torch.long)

dtype可以设置数据类型

创建张量

x=torch.tensor([[1,2],[3,4]])

创建同尺寸的张量(数据随机)

x=x.new_ones(5,3,dtype=torch.double)
y=torch.rand_like(x,dtype=torch.float)

张量的尺寸(返回的是元组)

x=x.new_ones(5,3,dtype=torch.double)
x.size()

基本运算操作

加法操作

x,y尺寸相同

x+y

尺寸相同和上个方法一致 

torch.add(x,y)

把结果存入result

result=torch.empty(5,3)
torch.add(x,y,out=result)

就地置换(存入x)

x.add_(y)

所有就地置换函数都有_的后缀

切片操作

和numpy几乎一致

改变张量形状(-1在前匹配列,在后或没有匹配行)

 取出唯一个元素

x.item()

与其他格式的相互转换

tensor转numpy array

b=x.numpy()

注意:如果对其中一个数据操作,另一个也会随之发生改变

numpy array转tensor

a=np.ones(5)
b=torch.from_numpy(a)

注意:如果对其中一个数据操作,另一个也会随之发生改变

cuda tensor

if torch.cuda.is_available():
    device = torch.device("cuda")
    y=torch.ones_like(x,device=device)
    x=x.to(device)
    z=x+y
    print(z)
    print(z.to("cpu",torch.double))

 autograd

在整个Pytorch框架中,所有的神经网络本质上都是一个autograd pickage(自动求导工具包)。

autograd package提供了一个对Tensors上所有的操作进行自动微分的功能。

torch.Tensor

requires_grad

torch.Tensor是整个package中的核心类,如将属性requires_grad设置为True,它将追踪在这个类上定义的所有操作,当代码要进行反向传播的时候,直接调用backward()就可以自动计算所有的梯度.在这个Tensor上的所有梯度将被累加进属性grad中。

x = torch.ones(2, 2, requires_grad=True)
y=x+2
print(x.grad_fn)
print(y.grad_fn)

改变 requires_grad属性
x.requires_grad_(True)

detach() 

如果想终止一个Tensor在计算图中的追踪回溯,只需要执行detach()就可以将该Tensor从计算图中撤下,在未来的回溯计算中也不会再计算该Tensor。

除了detach(),如果想终止对计算图的回溯,也就是不再进行方向传播求导数的过程,也可以采用代码块的方式with torch.no_grad():, 这种方式非常适用于对模型进行预测的时候,因为预测阶段不再需要对梯度进行计算.

torch.Function

Function类是和Tensor类同等重要的一个核心类,它和Tensor共同构建了一个完整的类,每一个Tensor拥有一个grad_fn属性,代表引用了哪个具体的Function创建了该Tensor。

如果某个张量Tensor是用户自定义的,则其对应的grad_fn is None。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1367652.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

鸿蒙设备-开发板基础学习(BearPi-HM Micro)

theme: minimalism 每当学习一门新的编程语言或者上手一款新的开发板,在学习鸿蒙设备开发过程中,带大家写的第一个程序,通过这个程序,我们可以对鸿蒙设备开发的整个流程有一个初步的体验。BearPi-HM Micro开发板为例:…

127基于matlab的卡尔曼滤波在目标跟踪中应用仿真研究

基于matlab的卡尔曼滤波在目标跟踪中应用仿真研究,模拟目标真实轨迹 z,形成观测数据(真实轨迹位置数据迭加上观测数据) , 递推估计 ,计算估计误差画出目标轨迹、测量数据、滤波数据曲线;滤波误差…

FPGA状态机学习

Verilog 是硬件描述语言,硬件电路是并行执行的,当需要按照流程或者步骤来完成某个功能时,代码中通常会使用很多个 if 嵌套语句来实现,这样就增加了代码的复杂度,以及降低了代码的可读性,这个时候就可以使用…

网络安全复习--简答整理

-----------------------------------------------------教材如上图------------------------------------------------------------ 1.对称加密和非对称加密各有什么特点?加密解密过程中有什么区别?优点P38【考】 对称加密的特点:在针对同一…

Android14之解决刷机报错:Can not load Android system. Your data may be corrupt(一百七十七)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

开启Android学习之旅-1

最近在学习《第一行代码 Android》,两天看书把所有代码都敲了一遍。由于之前没有接触过 Kotlin,导致了囫囵吞枣,跟着书会敲,离开就忘了。Android 大佬开发的各种框架、控件好像大部分都用了 Kotlin。看他们的源码,理解…

爬虫瑞数5案例:某通信

声明: 该文章为学习使用,严禁用于商业用途和非法用途,违者后果自负,由此产生的一切后果均与作者无关 一、瑞数简介 瑞数动态安全 Botgate(机器人防火墙)以“动态安全”技术为核心,通过动态封装…

Javaweb之Mybatis的动态SQL的详细解析

3. Mybatis动态SQL 3.1 什么是动态SQL 在页面原型中,列表上方的条件是动态的,是可以不传递的,也可以只传递其中的1个或者2个或者全部。 而在我们刚才编写的SQL语句中,我们会看到,我们将三个条件直接写死了。 如果页面…

4.7 MEMORY AS A LIMITING FACTOR TO PARALLELISM

虽然CUDA寄存器和共享内存在减少对全局内存的访问次数方面非常有效,但必须注意保持在这些内存的容量范围内。这些内存是线程执行所需的资源形式。每个CUDA设备提供有限的资源,从而限制了给定应用程序可以同时驻留在SM中的线程数量。通常,每个…

第11章 GUI Page480~486 步骤二十七 “脏数据”与“新文档”状态维护

wxMyPainterFrame类定义中声明新的成员: 增加一个全局变量,初始化新成员: 先实现TrySaveFile() SaveFile()暂时为空实现 增加两个新的私有成员方法: wxMyPainterFrame类中,修改了“_items”的几个地方 ① 鼠标抬起时…

设计模式的艺术P1基础—2.3 类之间的关系

设计模式的艺术P1基础—2.3 类之间的关系 在软件系统中,类并不是孤立存在的,类与类之间存在各种关系。对于不同类型的关系,UML提供了不同的表示方式 1.关联关系 关联(Association)关系是类与类之间最常用…

属性动画的使用

文章目录 1 概述2 创建属性动画页面3 属性动画参数调整延时播放时间delay的设置onFinish回调函数的使用 4 关闭属性动画页面5 参考 1 概述 属性动画,是最为基础的动画,其功能强大、使用场景多,应用范围较广。常用于如下场景中: …

代码随想总结

1. 刷题技能成长 之前跟着代码随想录刷过一段时间,但是因为是自己刷不知道每天该刷几道题,而且没有组织的坚持异常困难,第一次在刷完链表之后,就逐渐停滞不前,十一月份看到了代码随想录的训练营,纠结要不要…

配置git服务器

第一步: jdk环境配置 (1)搜索【高级系统设置】,选择【高级】选项卡,点【环境变量】 (2)在【系统变量】里面,点击【新建】 (3)添加JAVA_HOME环境变量JAVA_HO…

嵌入式培训机构四个月实训课程笔记(完整版)-Linux系统编程第六天-Linux信号(物联技术666)

更多配套资料CSDN地址:点赞+关注,功德无量。更多配套资料,欢迎私信。 物联技术666_嵌入式C语言开发,嵌入式硬件,嵌入式培训笔记-CSDN博客物联技术666擅长嵌入式C语言开发,嵌入式硬件,嵌入式培训笔记,等方面的知识,物联技术666关注机器学习,arm开发,物联网,嵌入式硬件,单片机…

基于zookeeper实现服务节点HA主备自动切换

文章目录 前言一、架构图和流程图二、流程说明1.服务启动初始化ZK、注册所有服务节点信息-MasterRegister2.创建、运行服务节点,并管理服务节点-LeaderSelectorZkClient。3.典型场景-调度服务单体执行-DigitalEmpTask 总结参考 前言 Spring Boot 主备切换可以采用数…

mac电脑php命令如何设置默认的php版本

前提条件:如果mac电脑还没安装多个PHP版本,可以先看这篇安装一下 mac电脑运行多个php版本_mac 同时运行两个php-CSDN博客 第一部分:简单总结 #先解除现在默认的php版本 brew unlink php7.4#再设置的想要设置的php版本 brew link php8.1第二部…

python 多线程 守护线程

daemon线程:守护线程,优先级别最低,一般为其它线程提供服务。通常,daemon线程体是一个无限循环。如果所有的非daemon线程(主线程以及子线程)都结束了,daemon线程自动就会终止。t.daemon 属性,设…

一、MOJO环境部署和安装

以Ubuntu系统为例。 安装mojo-CLI curl https://get.modular.com | MODULAR_AUTHmut_fe303dc5ca504bc4867a1db20d897fd8 sh - 安装mojo SDK modular auth mojo modular auth install mojo 查看mojo版本号 mojo --version 输入mojo指令,进入交互编程窗口

【UE Niagara学习笔记】02 - 制作燃烧的火焰

目录 效果 步骤 一、添加资产 二、制作材质 三、制作粒子 3.1 循环播放 3.2 粒子生成的数量 3.3 粒子的生命周期和初始大小 3.4 火焰高度 3.5 火焰范围 3.6 火焰颜色 效果 步骤 一、添加资产 1. 在虚幻商城中搜索“M5 VFX Vol2. Fire and Flames(Niagara)”…