PyTorch学习笔记(二):PyTorch简介与基础知识

这篇具有很好参考价值的文章主要介绍了PyTorch学习笔记(二):PyTorch简介与基础知识。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 PyTorch学习笔记(二):PyTorch简介与基础知识

👨‍💻作者简介:大数据专业硕士在读,CSDN人工智能领域博客专家,阿里云专家博主,专注大数据与人工智能知识分享,公众号:GoAI的学习小屋,免费分享书籍、简历、导图等资料,更有交流群分享AI和大数据,加群方式公众号回复“加群”或➡️点击链接。

🎉专栏推荐:➡️点击访问《计算机视觉》:长期更新不限于深度学习、OCR、目标检测、图像分类、分割等方向总结资料。      ➡️点击访问《深入浅出OCR》:  对标全网最全OCR教程。以上目前活动仅29.9,感兴趣小伙伴可关注下。

🎉学习者福利:强烈推荐一个优秀AI学习网站,包括机器学习、深度学习等理论与实战教程,非常适合AI学习者。➡️网站链接。

🎉技术控福利:程序员兼职社区招募!技术范围广,CV、NLP方向均可,要求有一定基础,最好是研究生及以上或有工作经验,欢迎大佬加入!群内Python、c++、Matlab等各类编程语言单应有尽有, 资源靠谱、费用自谈,有意向直接➡️访问。

往期学习资料推荐:

1.Pytorch实战笔记_GoAI的博客-CSDN博客

2.Pytorch入门教程_GoAI的博客-CSDN博客

本系列目录:

PyTorch学习笔记(一):PyTorch环境安装

PyTorch学习笔记(二):简介与基础知识

PyTorch学习笔记(三):PyTorch主要组成模块

PyTorch学习笔记(四):PyTorch基础实战

PyTorch学习笔记(五):模型定义、修改、保存

PyTorch学习笔记(六):PyTorch进阶训练技巧

 PyTorch学习笔记(七):PyTorch可视化

 PyTorch学习笔记(八):PyTorch生态简介

后续继续更新!!!!


1. PyTorch简介

  • 概念:由Facebook人工智能研究小组开发的一种基于Lua编写的Torch库的Python实现的深度学习库
  • 优势:简洁、上手快、具有良好的文档和社区支持、项目开源、支持代码调试、丰富的扩展库

2 PyTorch基础知识

2.1张量

  • 分类:0维张量(标量)、1维张量(向量)、2维张量(矩阵)、3维张量(时间序列)、4维张量(图像)、5维张量(视频)
  • 概念:一个数据容器,可以包含数据、字符串等
import torch
# 创建tensor
x = torch.rand(4, 3)
print(x)
# 构造数据类型为long,数据是0的矩阵
x = torch.zeros(4, 3, dtype=torch.long)
print(x)
tensor([[0.9515, 0.6332, 0.8228],
        [0.3508, 0.0493, 0.7606],
        [0.7326, 0.7003, 0.1925],
        [0.1172, 0.8946, 0.9501]])
tensor([[0, 0, 0],
        [0, 0, 0],
        [0, 0, 0],
        [0, 0, 0]])
  • 常见的构造Tensor的函数:

    函数 功能
    Tensor(*sizes) 基础构造函数
    tensor(data) 类似于np.array
    ones(*sizes) 全1
    zeros(*sizes) 全0
    eye(*sizes) 对角为1,其余为0
    arange(s,e,step) 从s到e,步长为step
    linspace(s,e,steps) 从s到e,均匀分成step份
    rand/randn(*sizes) rand是[0,1)均匀分布;randn是服从N(0,1)的正态分布
    normal(mean,std) 正态分布(均值为mean,标准差是std)
    randperm(m) 随机排列
  • 操作:

    1. 使用索引表示的变量与原数据共享内存,即修改其中一个,另一个也会被修改
    2. 使用torch.view改变tensor的大小
    3. 广播机制:当对两个形状不同的Tensor按元素运算时,可能会触发广播(broadcasting)机制
# 使用view改变张量的大小
x = torch.randn(5, 4)
y = x.view(20)
z = x.view(-1, 5) # -1是指这一维的维数由其他维度决定
print(x.size(), y.size(), z.size())
torch.Size([5, 4]) torch.Size([20]) torch.Size([4, 5]) 
x = tensor([[1, 2]])
y = tensor([[1],
        [2],
        [3]])
x + y = tensor([[2, 3],
        [3, 4],
        [4, 5]])

2.2 自动求导

  • autograd包:提供张量上的自动求导机制
  • 原理:如果设置.requires_gradTrue,那么将会追踪张量的所有操作。当完成计算后,可以通过调用.backward()自动计算所有的梯度。张量的所有梯度将会自动累加到.grad属性
  • FunctionTensorFunction互相连接生成了一个无环图 (acyclic graph),它编码了完整的计算历史。每个张量都有一个.grad_fn属性,该属性引用了创建Tensor自身的Function
x = torch.ones(2, 2, requires_grad=True)
print(x)
tensor([[1., 1.],
        [1., 1.]], requires_grad=True)
y = x ** 2
print(y)
tensor([[1., 1.],
        [1., 1.]], grad_fn=<PowBackward0>)
z = y * y * 3
out = z.mean()
print("z = ", z)
print("z mean = ", out)
z =  tensor([[3., 3.],
        [3., 3.]], grad_fn=<MulBackward0>)
z mean =  tensor(3., grad_fn=<MeanBackward0>)

 PyTorch学习笔记(二):PyTorch简介与基础知识

 grad的反向传播:运行反向传播,梯度都会累加之前的梯度,所以一般在反向传播之前需把梯度清零

out.backward()
print(x.grad)
tensor([[3., 3.],
        [3., 3.]])
# 反向传播累加
out2 = x.sum()
out2.backward()
print(x.grad)
tensor([[4., 4.],
        [4., 4.]])

2.3并行计算

  • 目的:通过使用多个GPU参与训练,加快训练速度,提高模型学习的效果

  • CUDA:通过使用NVIDIA提供的GPU并行计算框架,采用cuda()方法,让模型或者数据迁移到GPU中进行计算

  • 并行计算方法:文章来源地址https://www.toymoban.com/news/detail-406359.html

    1. Network partitioning:将一个模型网络的各部分拆分,分配到不同的GPU中,执行不同的计算任务
    2. Layer-wise partitioning:将同一层模型拆分,分配到不同的GPU中,训练同一层模型的部分任务
    3. Data parallelism(主流):将不同的数据分配到不同的GPU中,执行相同的任务

到了这里,关于PyTorch学习笔记(二):PyTorch简介与基础知识的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • (学习笔记)TCP基础知识

    TCP 是 面向连接的、可靠的、基于字节流 的传输层通信协议。 面向连接:一定是[一对一]才能连接,不能像UDP协议可以一个主机同时向多个主机发送消息,也就是一对多是无法做到的; 可靠的:无论网络链路中出现了怎样的链路变化,TCP都可以保证一个报文一定能够到达接收

    2024年02月16日
    浏览(58)
  • Zookeeper学习笔记(1)—— 基础知识

    Zookeeper 是一个开源的分布式的, 为分布式框架提供协调服务 的 Apache 项目 Zookeeper从设计模式角度来理解:是一个基于 观察者模式 设计的 分布式服务管理框架 ,它 负责存储和管理大家都关心的数据 ,然后 接受观察者的注 册 ,一旦这些数据的状态发生变化,Zookeeper就 将负

    2024年02月05日
    浏览(37)
  • Android ContentProvider基础知识学习笔记

    1、动态申请权限 2、读取手机联系人 3、创建自己的ContentProvider (1) onCreate()。初始化ContentProvider的时候调用。通常会在这里完成对数据库的创建和升级等操作,返回true表示ContentProvider初始化成功,返回false则表示失败。 (2) query()。从ContentProvider中查询数据。uri参数用于确定查

    2024年04月10日
    浏览(44)
  • golang学习笔记(defer基础知识)

    defer语句用于golang程序中延迟函数的调用, 每次defer都会把一个函数压入栈中, 函数返回前再把延迟的函数取出并执行。 为了方便描述, 我们把创建defer的函数称为主函数, defer语句后面的函数称为延迟函数。延迟函数可能有输入参数, 这些参数可能来源于定义defer的函数,

    2024年04月25日
    浏览(47)
  • (学习笔记-IP)IP基础知识

    IP在TCP/IP参考模型中处于第三层,也就是 网络层。 网络层的主要作用是: 实现主机与主机之间的通信,也叫点对点的通信。  网络层与数据链路层的关系: MAC的作用是实现 直连 的两个设备之间通信,而IP负责 没有直连 的两个网络之间进行通信传输  因此 计算机网络中需要

    2024年02月16日
    浏览(51)
  • 数电模电基础知识学习笔记汇总

    文章目录: 数电和模电的关系 一:模电学习笔记 二:数电学习笔记 三:福利 1.NI Multisim14.0电路仿真软件的下载安装 2.进制转换 3.电路常用公式 4.好的参考笔记  4.1 笔记  3.1.1 模电 3.1.1 数电 4.2 网站 5.八股文 来源:一周搞(不)定数电模电全集,电子基础知识 11小时 模电基

    2024年02月15日
    浏览(60)
  • CAN总线学习笔记 | CAN基础知识介绍

    1.1 CAN协议简介 CAN 是控制器局域网络 (Controller Area Network) 的简称,它是由研发和生产汽车电子产品著称的德国 BOSCH 公司开发的,并最终成为国际标准(ISO11519以及ISO11898),是国际上应用最广泛的现场总线之一。差异点如下: 1.2 CAN物理层 CAN 通讯不是以时钟信号来进行同步的,它

    2023年04月09日
    浏览(48)
  • Windows Api 学习笔记 1——基础知识(上)

    推荐阅读《深入浅出:Windows Api 程序设计》。《深入浅出:Windows Api 程序设计》是 王端明 先生的著作,是2022年人民邮电出版社出版的图书。 Microsoft Windows是美国微软公司开发的一套操作系统。自1985年问世以来,随着软硬件的升级,Microsoft Windows不断迭代更新,变得更加人性

    2024年02月08日
    浏览(72)
  • UE4 地形编辑基础知识 学习笔记

    之前自己写过这样的功能,今天看到一个UE现成的 点击地形,选择样条 按住CTRL键+点击屏幕中某一个点会在场景内生成一个这样的图标 再点两次,会生成B样条的绿线条 点击+号再选择一个模型,会生成对应的链条状的mesh 拉高最远处的一个图标抬高 如果想地形贴合该mesh,则

    2024年02月11日
    浏览(56)
  • 嵌入式学习笔记——STM32硬件基础知识

    上一篇中我们重点是讲了一下怎么搭建开发环境以及怎么下载烧录的过程,这都是解决的电脑端的开发环境问题,还没有到实际的开发板上,我们的单片机是都是焊接在开发板上的,PCB上有着它所需的工作电路。并不是直接给供电电压就可以让其工作的,本文主要是简介一下

    2024年01月22日
    浏览(75)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包