pytorch入门理解

news2024/9/27 23:49:37

一、入门操作

1、创一个tensor矩阵

x = torch.rand(5, 3)
x
out:
tensor([[0.5051, 0.7017, 0.0170],
        [0.1441, 0.2476, 0.5710],
        [0.0452, 0.8690, 0.2387],
        [0.5709, 0.0098, 0.6993],
        [0.3203, 0.5124, 0.1010]])

创建好后可以直接打印,要比tensorflow好用太多

2、矩阵大小

这跟numpy略有区别,numpy是shape

pytorch是size

x.size()

out:
torch.Size([5, 3])

3、简单计算

x=torch.rand(5,3)
y=torch.rand(5,3)

x
tensor([[0.5051, 0.7017, 0.0170],
        [0.1441, 0.2476, 0.5710],
        [0.0452, 0.8690, 0.2387],
        [0.5709, 0.0098, 0.6993],
        [0.3203, 0.5124, 0.1010]])
y
tensor([[0.6415, 0.5819, 0.3311],
        [0.0086, 0.4336, 0.5773],
        [0.3360, 0.5421, 0.1845],
        [0.4490, 0.1557, 0.5100],
        [0.0162, 0.5474, 0.3124]])
add=x + y #add=torch.add(x, y)
print(add)

out:
tensor([[1.1466, 1.2836, 0.3481],
        [0.1527, 0.6813, 1.1483],
        [0.3812, 1.4111, 0.4232],
        [1.0199, 0.1655, 1.2094],
        [0.3364, 1.0598, 0.4134]])

4、与Numpy的协同操作

tensor–numpy

a = torch.ones(5)
a
b = a.numpy()
b
out:
a:tensor([1., 1., 1., 1., 1.])
b:array([1., 1., 1., 1., 1.], dtype=float32)

numpy-- tensor

import numpy as np
a = np.ones(5)
b = torch.from_numpy(a)
b

tensor([1., 1., 1., 1., 1.], dtype=torch.float64)

二、求导原理

先定义一个x

x = torch.randn(3,4,requires_grad=True)
x
out:
tensor([[ 2.4921,  0.3292,  0.2324, -0.8859],
        [-1.3799,  1.6637, -0.5004, -0.4578],
        [-0.2573, -2.0164,  0.3258,  0.0283]], requires_grad=True)

我们看到这里多了一个参数requires_grad

所有的tensor都有.requires_grad属性,默认为False,但是可以设置成自动求导。具体方法就是在定义tensor的时候,让这个属性为True,需要注意的是,要想使x支持求导,必须让x为浮点类型

我们继续liner—regress

b = torch.randn(3,4,requires_grad=True)
b
tensor([[-0.2642,  0.3113,  0.0120, -1.3174],
        [ 0.1307,  1.8577,  0.0130,  0.3950],
        [-0.3580,  1.3666,  0.2026, -0.4438]], requires_grad=True)
t = 2*x*x + b
y = t.sum()
y

tensor(23.7106, grad_fn=<SumBackward0>)

  • PyTorch里面,求导是调用**.backward()**方法。直接调用backward()方法,会计算对计算图叶节点的导数。

  • 获取求得的导数,用**.grad**方法。

y.backward()

x.requires_grad, b.requires_grad, t.requires_grad

(True, True, True)

image.gif

我们看到x,b,t的requires_grad都为True

x.grad

tensor([[ 9.9684,  1.3170,  0.9295, -3.5436],
        [-5.5196,  6.6548, -2.0017, -1.8311],
        [-1.0293, -8.0657,  1.3033,  0.1134]])

image.gif

因为 y = 2 x 2 + b y = 2x^2 + b y=2x2+b, y对x求导为4x

所以x.grad=4x

关于求导的过程可以参考链式法则

image

需要注意的是:求导,只能是【标量】对标量,或者【标量】对向量/矩阵求导!

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

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

相关文章

【SQL时间截取】数据库Sql实现截取时间段和日期

【写在前面】前些日子接到这样的需求&#xff0c;我们要对用户访问网站的时间做个统计&#xff0c;但是我想统计到具体的时间点&#xff0c;便于统计不同时间段&#xff08;上午、下午、傍晚、凌晨&#xff09;访问的人数占比。 数据库Sql实现截取时间段和日期1、原始数据查看2…

【云原生】k8s之Ingress

内容预知 1.Ingress的相关知识 1.1 Ingress的简介 1.2 Ingress 的组成 1.3 Ingress-Nginx的工作原理 1.4 新生代Ingress-controller &#xff08;Traefik&#xff09; Ingress-nginx和Ingress-Traefik的简单对比 1.5 Ingress的暴露方式 方式一&#xff1a;DeploymentLoad…

ocr票据证件信息抽取正则化

Python 正则表达式 | 菜鸟教程Python 正则表达式 正则表达式是一个特殊的字符序列&#xff0c;它能帮助你方便的检查一个字符串是否与某种模式匹配。Python 自1.5版本起增加了re 模块&#xff0c;它提供 Perl 风格的正则表达式模式。 re 模块使 Python 语言拥有全部的正则表达式…

华为数字化转型之道 实践篇 第九章 数字化运营:实现业务运营模式升级

第九章 数字化运营:实现业务运营模式升级 业务运营是为了帮助企业基于自身业务战略,更好地达成企业经营与运营目标,这中间包含业务沿着流程周而复始地运转,以及在作业过程中识别并推动问题解决等过程。 而数字化运营旨在利用数字技术获取、管理和分析数据,为企业的战略决…

[ 常用工具篇 ] burpsuite_pro 安装配置详解(附安装包)

&#x1f36c; 博主介绍 &#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 _PowerShell &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 &#x1f389;点赞➕评论➕收藏 养成习…

【矩阵论】5. 线性空间与线性变换——线性空间

矩阵论 1. 准备知识——复数域上矩阵,Hermite变换) 1.准备知识——复数域上的内积域正交阵 1.准备知识——Hermite阵&#xff0c;二次型&#xff0c;矩阵合同&#xff0c;正定阵&#xff0c;幂0阵&#xff0c;幂等阵&#xff0c;矩阵的秩 2. 矩阵分解——SVD准备知识——奇异值…

JVM调优学习

JVM 介绍 1 什么是 JVM JVM 是 Java Virtual Machine&#xff08;Java 虚拟机&#xff09;的缩写。一台执行 Java 程序的机器。 2 JAVA 语言的执行原理 计算机语言&#xff1a; 计算机能够直接执行的指令。这种指令和系统及硬件有关。 计算机高级语言&#xff1a; 在遵循语…

主机加固对服务器防勒索病毒有哪些好处

​ 近年来&#xff0c;计算机以及互联网应用在中国得到普及和发展&#xff0c;已经深入到社会每个角落&#xff0c;政府&#xff0c;经济&#xff0c;军事&#xff0c;社会&#xff0c;文化和人们生活等各方面都越来越依赖于计算机和网络&#xff0c;电子政务&#xff0c;无纸办…

排列树和子集树

排列树 输出数组的全排列 排列问题&#xff1a; 设R {r1,r2,r3,…,rn}是要排列的n个元素&#xff0c;Ri R - {r1} 集合X中元素的全排列记为perm(X)。(ri)perm(x)便是在全排列perm(X)的每一个排列前加上前缀ri得到的排列。 R的全排列&#xff1a; n1时&…

通信电子、嵌入式类面试题刷题计划02

文章目录011——单片机上电后没有运转&#xff0c;首先要检查什么&#xff1f;【校招】012——请描述你对数字IC的认识【实习】013——电脑的组成&#xff0c;细化到显卡之类的【软件/硬件测试】014——黑盒测试和白盒测试的区别? 【软件/硬件测试】015——名词扩写&#xff1…

【C语言开源项目】tinyhttpd ——下载、安装、使用

前言 本系列将带领大家看一些C语言的优秀的开源项目&#xff0c;并逐步深入讲解源码&#xff0c;感兴趣的可以点击关注、收藏&#xff0c;有问题及时在评论区评论~ Tinyhttpd 介绍 Tinyhttpd 是一个非常轻量级的 web server&#xff0c;总共只有500多行代码&#xff0c;非常…

Studio One2023中文版支持视频配乐加歌词音轨功能

Studio One 6中文特别版&#xff0c;现在Studio One 6终于有了视频支持&#xff0c;可以方便做视频配乐了。视频可以作为一个独立的音轨使用&#xff0c;跟乐器和音频音轨一样。你可以像音频素材一样在时间条来回拖拽视频来进行音画同步对齐。如果视频也包括了音频&#xff0c;…

第十章 鲁棒性检查(下)

文章目录10.9 统计静态时序分析(Statistical Static Timing Analysis)10.9.1 工艺和互连走线变化(Process and Interconnect Variations)10.9.2 统计分析(Statistics Analysis)10.10 时序违例路径(Paths Failing Timing)路径找不到(No Path Found)跨时钟域(Clock Crossing Doma…

PMP证书的含金量怎么样?

是高的&#xff0c;在项目管理或者管理领域中&#xff0c;知名度和含金量都是在前列的。PMP证书是由美国PMI项目管理协会发起的&#xff0c;享誉国内外&#xff0c;含金量不高点都不会有超过百万的人获得这个证书了&#xff0c;而不管是对个人、组织甚至是整个项目管理行业&…

python采集往期股票数据进行分析预测

前言 嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! 准备工作 既然要去赚马内&#xff0c;咱们首先要获取往期的数据来进行分析&#xff0c; 通过往期的规律来对当前进行预测&#xff0c;准不准我不知道&#xff0c;反正比人预测的准&#xff0c; 不准也不要喷我&#xff0…

使用markdown语法+Typora+MPic+七牛云对象存储写作教程

使用markdown语法TyporaMPic七牛云对象存储写作教程 一. markdown语法 Markdown是一种轻量级标记语言&#xff0c;排版语法简洁&#xff0c;让人们更多地关注内容本身而非排版。它使用易读易写的纯文本格式编写文档&#xff0c;可与HTML混编&#xff0c;可导出 HTML、PDF 以及…

UCOS简单介绍

什么是UCOS&#xff1f; UCOSII 的前身是 UCOS&#xff0c;最早出自于 1992 年美国嵌入式系统专家 Jean J.Labrosse 在《嵌入式系统编程》杂志的 5 月和 6 月刊上刊登的文章连载&#xff0c;并把 UCOS 的源码发布在该杂志的BBS 上。 UCOSII 是一个可以基于 ROM 运行的、可裁减…

支付系统设计

支付永远是一个公司的核心领域&#xff0c;因为这是一个有交易属性公司的命脉。那么&#xff0c;支付系统到底长什么样&#xff0c;又是怎么运行交互的呢?抛开带有支付牌照的金融公司的支付架构&#xff0c;下述链路和系统组成基本上符合绝大多数支付场景。其实整体可以看成是…

TCP/IP网络传输模型

先来个总结&#xff1a; TCP/IP的网络传输模型可以分为以下四层&#xff1a;应用层、传输层、IP网络层、网络接口层。 下面我们来简单介绍每一层的作用和工作原理 应用层&#xff08;Application Layer&#xff09; 从网络传输模型来说&#xff0c;应用层能说的东西不是太多&a…

Merkle trees vs Verkle trees

什么是默克尔树&#xff0c;它们是如何工作的&#xff1f;使用加密哈希算法的二叉树称为 Merkle 树。哈希树也称为 Merkle 树&#xff0c;用数据块的加密哈希标记叶节点。此外&#xff0c;它还使用其子节点标签的加密散列来标记非叶节点。每个节点都会生成一个摘要(Hash)&#…