43期《深入浅出Pytorch》课程 - Task01:PyTorch的安装和基础知识+前置知识打卡

news2025/7/14 17:56:24

在这里插入图片描述
在这里插入图片描述

Task01

  • 1、Pytorch安装
  • 2、基础知识
    • 2.1 张量(Tensor)
    • 2.2 自动求导
    • 2.3 梯度
    • 2.4 并行计算
  • 3、前置知识打卡

1、Pytorch安装

由于之前使用过Pytorch,所以说不需要再重新下载,直接开始后续的基础知识
在这里插入图片描述

2、基础知识

由于之前学习过numpy系列,所以说对于Pytorch的理解会轻松很多。

2.1 张量(Tensor)

①创建tensor

import torch
x = torch.rand(4, 3) 
print(x)

和numpy差不多,随机生成4X3的矩阵

在这里插入图片描述
②全0矩阵

x = torch.zeros(4, 3, dtype=torch.long)
print(x)

和numpy里面的zeros也是一样的
在这里插入图片描述
由于之前系统学习过numpy并且参加过一些比赛,于是不在此赘述关于张量部分的知识,和numpy的基础很像,换个包名字就行(具体关于numpy的可以参考此链接https://blog.csdn.net/weixin_42198265/category_11063560.html?spm=1001.2014.3001.5482)
在这里插入图片描述

2.2 自动求导

在pytorch中,所有神经网络的核心是 autograd 包
①.backward()

  • torch.Tensor 是这个包的核心类。
  • 如果设置它的属性 .requires_grad 为 True,那么它将会追踪对于该张量的所有操作。
    -当完成计算后可以通过调用 .backward(),来自动计算所有的梯度
  • 这个张量的所有梯度将会自动累加到.grad属性。

注意:在 y.backward() 时,如果 y 是标量,则不需要为 backward() 传入任何参数;否则,需要传入一个与 y 同形的Tensor

②Function
Tensor 和 Function 互相连接生成了一个无环图 (acyclic graph),它编码了完整的计算历史。

  • 每个张量都有一个.grad_fn属性,该属性引用了创建 Tensor 自身的Function(除非这个张量是用户手动创建的,即这个张量的grad_fn是 None )。
from __future__ import print_function
import torch
# 手动创建张量->grad_fn返回结果是None
x = torch.randn(3,3,requires_grad=True)
print(x.grad_fn)

在这里插入图片描述

③requires_grad
.requires_grad - 默认的是False,如果不打开,就是False;如果打开就会显示True;最后的计算记录可以在.grad_fn中显示。

a = torch.randn(2, 2) # 缺失情况下默认 requires_grad = False
a = ((a * 3) / (a - 1))
print(a.requires_grad)
a.requires_grad_(True)
print(a.requires_grad)
b = (a * a).sum()
print(b.grad_fn)

在这里插入图片描述

2.3 梯度

反向传播:

  • 因为 out 是一个标量,因此out.backward()out.backward(torch.tensor(1.)) 等价

out.backward() -> 输出导数 d(out)/dx【微积分】

grad在反向传播过程中是累加的(accumulated),这意味着每一次运行反向传播,梯度都会累加之前的梯度,所以一般在反向传播之前需把梯度清零

# 设置tensor
x = torch.ones(2, 2, requires_grad=True)
y = x**2
z = y * y * 3
out = z.mean()

# 第一次梯度下降
out.backward()
print(x.grad)

# 不归0的梯度下降 - 梯度累加
out2 = x.sum()
out2.backward()
print(x.grad) # 进行累加

# 归0后的梯度下降 - 梯度从0开始
out3 = x.sum()
x.grad.data.zero_() # 将梯度归0
out3.backward()
print(x.grad)

在这里插入图片描述
由于如果是向量,是无法直接计算其梯度的,故而有一种方法是将向量传给 backward,再使用.grad方法。

先确定向量

x = torch.randn(3, requires_grad=True) # 随机得到一个1X3的矩阵
print(x)

y = x * 2 # 将矩阵进行两倍相乘
print(y)
i = 0 # 设置梯度参数-记录次数
while y.data.norm() < 1000:
    y = y * 2
    i = i + 1
print(y)
print(i)

输出:
tensor([ 0.1789, -1.4232, -0.9889], requires_grad=True)
tensor([ 0.3577, -2.8463, -1.9778], grad_fn=<MulBackward0>)
tensor([  183.1484, -1457.3232, -1012.6375], grad_fn=<MulBackward0>)
9

torch.autograd 不能直接计算完整的雅可比矩阵,但是如果我们只想要雅可比向量积,只需将这个向量作为参数传给 backward

v = torch.tensor([0.1, 1.0, 0.0001], dtype=torch.float)
y.backward(v)
print(x.grad)
输入:
tensor([1.0240e+02, 1.0240e+03, 1.0240e-01])

修改梯度参数
v = torch.tensor([0.1, 8.0, 0.00001], dtype=torch.float)
y.backward(v)
print(x.grad)
输出:
tensor([1.0240e+02, 8.1920e+03, 1.0240e-02])

2.4 并行计算

之前李弘毅老师的视频中说过,深度学习再一次爆火的一部分原因是,可以用GPU进行并行运算了,大大减少训练模型时间,但是由于自己电脑配置太低,cuda不太能用,之前试过没有成功。所以说一般使用GPU都在kaggle的平台里。
一周还有30多小时,是在不行还能用算力资源,一小时也比较便宜
在这里插入图片描述
对于并行运算,有一个李弘毅老师视频讲过,就类似下方这种(https://blog.csdn.net/weixin_42198265/article/details/126349359)
在这里插入图片描述

3、前置知识打卡

对于前置知识这一块,由于之前接触过numpy和pytorch,所以说有些会的就不再记录了。
①!cat demo.py
这种就是可以直接在jupyter中运行py文件
②%timeit
计算时间-评估运行效率

def choose_sort(arr: list) -> list:
    length = len(arr)
    for i in range(length):
        min_idx = i
        for j in range(i, length):
            if arr[j] < arr[min_idx]:
                min_idx = j
        if min_idx != i:
            arr[i], arr[min_idx] = arr[min_idx], arr[i]
    return arr

import random
lst = [random.randint(1, 1000) for i in range(1000)]
%timeit choose_sort(lst)

输出:
32.6 ms ± 575 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)

学习文档里面还写了一些对于文件的保存和读取,不过我一般都是用pd.read_csv那些,对于txt文件读取也是用的with open

以上就是task01的全部打卡,希望可以在datawhale的学习中,学的更好!

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

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

相关文章

用专业团队管理软件工具轻松“拿捏”年轻运营团队

本文旨在抛砖引玉&#xff0c;欢迎大家拍砖讨论&#xff0c;通过一款时下流行的专业团队管理软件飞项做案例&#xff0c;一起探讨和交流团队管理专业工具软件和一些对应的方法论。 说到国内这几年流行起来的团队管理工具软件&#xff0c;我们先看看互联网这几年的发展。这几年&…

网络舆情监测是干嘛的?

近年来&#xff0c;有赖于移动网络技术的发展和社会化媒体概念的崛起&#xff0c;讯息的传播与扩散速度得到了空前的提高&#xff0c;而对于民营企业来说同样带来了不少的挑战&#xff0c;接下来TOOM舆情监测系统小编带您简单介绍网络舆情监测是干什么的? 一、什么是网络舆情监…

用户画像系列——布隆过滤器在策略引擎中的应用

在用户画像系列——当我们聊用户画像&#xff0c;我们在聊什么&#xff1f; 介绍了用户画像的应用场景: (1)个性化推荐 通过用户标签给用户推荐合适的商品或者内容 (2)营销圈选 参考&#xff1a;用户画像系列——Lookalike在营销圈选扩量中的应用 (3)策略引擎 根据用户标…

HTML5网页设计制作基础大二dreamweaver作业、使用HTML+CSS技术制作博客网站(5个页面)

&#x1f389;精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业…

重磅推出!CrownCAD 2023全功能试用通道已开启!

CrownCAD 2023已于10月28日正式发布&#xff0c;为了更好地提升设计效率&#xff0c;不仅增强已有功能的智能性、标准性、应用性&#xff0c;更是在产品定义、属性、仿真、数据管理等方面再度突破&#xff0c;更加贴合中国制造需求。 CrownCAD 2023全功能试用通道已开启 为让…

如何在Win10上安装docker

[版权申明] 非商业目的注明出处可自由转载 出自&#xff1a;shusheng007 前言 没有了Mac Pro&#xff0c;我又捡起了我的Windows…&#xff0c;这是我给她安装docker的的记录&#xff0c;你愿意也可以瞅一眼 检查win10版本 我们的安装基于WSL2&#xff08;Windows subsystem…

【深入理解Kotlin协程】lifecycleScope源码追踪扒皮

lifecycleScope是LifecycleOwner的扩展属性&#xff0c;而 ComponentActivity 和 Fragment&#xff08;androidx&#xff09;都实现了 LifecycleOwner 接口&#xff0c;所以这就是为什么说lifecycleScope的作用范围是只能在Activity、Fragment中使用。public val LifecycleOwne…

vue-element-admin动态菜单(后台获取)

vue-element-admin动态菜单&#xff08;后台获取&#xff09;&#xff0c;此教程面向纯小白攻略&#xff0c;不要嫌我啰嗦&#xff0c;翻到自己需要的地方即可 前提 vue-element-admin官网&#xff1a; vue-element-admin (gitee.io) vue-element-admin页面展示&#xff1a;…

Spring Boot框架下实现Excel服务端导入导出

Spring Boot是由Pivotal团队提供的全新框架&#xff0c;其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置&#xff0c;从而使开发人员不再需要定义样板化的配置。今天我们就使用纯前对按表格控件带大家了解&#xff0c;如何在Spring…

高精度算法【加减乘除】

全文目录&#x1f60d; 前言&#x1f600; 高精度加法&#x1f914; 操作步骤&#x1f635;‍&#x1f4ab; 代码模板&#x1f600;高精度减法&#x1f914;操作步骤&#x1f635;‍&#x1f4ab; 代码模板&#x1f600;高精度乘法&#x1f914;操作步骤&#x1f635;‍&#x…

[R]第二节 对象介绍与赋值运算

前言 R 创建、控制的实体(entity)称为对象(object)。向量(vector)矩阵(matrix)数组(array)数据框(data frame)列表(list)因子(factor)函数(function)通过以上实体定义的更为一般性的结构(structures) 数据的存储形式 R语言进行数据存储选择一种合适的数据结构将已有的数据输入…

【Python实战】海量表情包炫酷来袭,快来pick斗图新姿势吧~(超好玩儿)

前言 有温度 有深度 有广度 就等你来关注哦~ 所有文章完整的素材源码都在&#x1f447;&#x1f447; 粉丝白嫖源码福利&#xff0c;请移步至CSDN社区或文末公众hao即可免费。 你有在聊天中遇到不知道该如何表达&#xff0c;如何回复的情况吗&#xff1f; 或许&#xff0c;使…

FastDFS学习(四)

目录&#xff1a; &#xff08;1&#xff09;FastDFS搭建集群的环境准备 &#xff08;2&#xff09;FastDFS集群搭建负载均衡环境-使用Nginx进行负载均衡 &#xff08;1&#xff09;FastDFS搭建集群的环境准备 架构图 如果你公司刚好用这个&#xff0c;那你就会搭建集群涉及…

python基于PHP+MySQL的个人博客系统毕设

随着时代和网络的发展,人们越来越希望通过多种模式来展示自己。于是个人博客就出现了,它可以更好的让人们来记录自己的工作和学习方式。博客不仅仅可以让自己抒发个人感情,还可以展示自己真实的生活,从而建立起一种友好的交友平台。 PHP个人博客系统毕设系统分为前台和后台两部…

第2-3-3章 文件处理策略-文件存储服务系统-nginx/fastDFS/minio/阿里云oss/七牛云oss

文章目录5.2 文件处理策略5.2.1 FileStrategy5.2.2 AbstractFileStrategy5.2.3 LocalServiceImpl5.2.4 FastDfsServiceImpl5.2.5 AliServiceImpl5.2.6 MinioServiceImpl5.2 文件处理策略 在开发fastDFS和minio实现类之前&#xff0c;需要提前安装部署好fastDFS和minio。搭建教程…

LIS.LCS.LCIS相关问题

文章目录P1020 [NOIP1999 普及组] 导弹拦截P1439 【模板】最长公共子序列P1637 三元上升子序列272. 最长公共上升子序列LCISP1020 [NOIP1999 普及组] 导弹拦截 P1020 [NOIP1999 普及组] 导弹拦截 导弹拦截应该是接触DP的第一题&#xff08;只不过洛谷上的数据加强了&#xff…

Windows平台 使用jarsigner对Apk签名

使用的是JDK自带的jarsigner工具来完成Apk签名 1) 首先找到你的Java Jdk中bin的路径&#xff1a;C:\Program Files\Java\jdk1.8.0_152\bin jarsigner简单使用说明 #jarsigner的命令格式&#xff1a; jarsigner -verbose -keystore [您的私钥存放路径] -signedjar [签名后文件存…

使用高数值孔径透镜进行脉冲聚焦

摘要 尽管对于大多数其他类型的光源而言&#xff0c;静态近似下是足够精确的&#xff0c;但对于超短脉冲来说需要更加精确的方法&#xff0c;其中要考虑到不同光谱模式之间的相关性。在此&#xff0c;我们在空间、时间与场分布上研究了该脉冲传播通过高数值孔径透镜的影响。 建…

基于matlab和Simulink的不同阶QAM调制解调系统误码率对比仿真

目录 1.算法概述 2.仿真效果预览 3.核心MATLAB预览 4.完整MATLAB程序 1.算法概述 正交振幅调制是利用已调信号在相同带宽内的频谱正交来实现两路并行的数据信息传输&#xff0c;其信道频带利用率与单边带调制一样&#xff0c;主要用于高速数据传输系统中。QAM系统组成框图如…

Vue3 - 事件 API 新标准(如何在 Vue3 中怎么用事件总线实现兄弟组件通信?相比 Vue2 有什么不同?)

前言 对比 Vue2 &#xff0c;引出并展开 Vue3 。 本文讲述了事件 API 在 Vue3 中相比 Vue2 有什么变化&#xff0c;以及使用方法和代码示例详细讲解。 回忆 Vue2 大家在写 Vue2 项目时&#xff0c;兄弟组件之间传参&#xff0c;我相信很大一部分开发者都会借助全局的事件总线&…