码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【PyTorch】基础知识及常用操作


    【PyTorch】基础知识及操作

    • 基础知识
      • tensor的形状(shape)
    • 常用操作
      • tensor处理
        • 创建tensor
        • 拼接tensor
        • 获取tensor中元素数目
      • 神经网络层使用
        • 卷积层
      • 设备信息获取

    基础知识

    tensor的形状(shape)

    在数据被加载为tensor时,PyTorch会根据原始的数据内容和形状来生成tensor。由于tensor的操作依托于PyTorch提供的方法,此时tensor未必符合PyTorch提供方法的输入形状要求,或此tensor经过操作后不是预期结果。

    因此,PyTorch在设计方法时大多对tensor进行了一致的形状建模,具体地讲:

    • 1D数据(通常为序列数据)的形状为:( C C C, L i n L_{in} Lin​)/(通道数,数据长度)
    • 2D数据(通常为图像数据)的形状为:( C C C, H i n H_{in} Hin​, W i n W_{in} Win​)/(通道数,数据高度,数据宽度)

    在处理tensor时为了提高计算效率,通常会一次性处理一批相同形状的数据。对于这批数据,其形状在单个数据的形状的基础上增加了批次信息,具体来说:

    • 1D数据在批处理时的形状为:( N N N, C C C, L i n L_{in} Lin​)/(批处理大小,通道数,数据长度)
    • 2D数据在批处理时的形状为:( N N N, C C C, H i n H_{in} Hin​, W i n W_{in} Win​)/(批处理大小,通道数,数据高度,数据宽度)

    值得注意的是,在使用PyTorch的方法对tensor进行处理时,方法要求的tensor输入形状与上述的通用形状未必一致,比如使用PyTorch提供的nn.LSTM模型方法时,1D数据的输入形状被要求为:( L i n L_{in} Lin​, N N N, C C C)/(数据长度,批处理大小,通道数)。

    因此,使用PyTorch的方法对tensor进行处理时,tensor的具体形状仍需参考方法的描述。

    常用操作

    tensor处理

    创建tensor

    torch.Tensor() 和 torch.tensor() 是 PyTorch 中两个不同的方法,用于创建张量,但使用方式有一些区别。

    torch.Tensor()
    创建一个未初始化的张量,默认数据类型为 torch.float32,不能通过dtype 参数指定数据类型。
    不初始化数据,即张量的内容是未定义的,可能是内存中的随机值。
    用法: 常用于需要创建一个特定大小但未初始化的张量。
    torch.tensor()
    根据给定的数据创建一个新的张量,可以通过 dtype 参数指定数据类型。
    用法: 用于从数据(例如列表或数组)创建张量。1

    拼接tensor

    torch.cat 和 torch.stack 是 PyTorch 中用于拼接张量的两个不同的函数,它们的主要区别在于拼接的方式和创建的维度。2

    获取tensor中元素数目

    pytorch中,numel() 函数用于获取张量中元素数目,其中 numel() 可以理解为是 number of elements 的缩写。3

    神经网络层使用

    卷积层

    卷积操作可参照4

    设备信息获取

    def gpus(self, model):
        if torch.cuda.device_count() > 1:
            print("Let's use", torch.cuda.device_count(), "GPUs!")
            model = nn.DataParallel(model)
        return model
    

    1. torch.Tensor() 和 torch.tensor()的区别 ↩︎

    2. Pytorch种torch.cat与torch.stack的区别 ↩︎

    3. pytorch中numel()函数用于获取张量中元素数目 ↩︎

    4. pytorch中Conv1d、Conv2d与Conv3d详解 ↩︎

  • 相关阅读:
    二叉树题目:二叉树剪枝
    【CKS】考试之TLS通信配置
    基于形状的匹配提纲
    比 O(nlog(n)) 做得更好——创造合适的条件
    快速搭建springcloud项目
    网络安全与TikTok:年轻一代的数字素养
    低代码与传统开发:综合比较
    vue3中props中数组报错 ‘item‘ is of type ‘unknown‘
    MYSQL8.0.27 ERROR 1146 (42S02): Table ‘mysql.role_edges‘ doesn‘t exist
    15. Redis 持久化
  • 原文地址:https://blog.csdn.net/qq_53457019/article/details/143221906
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号