码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Pytorch:Torch数据类型学习整理与记录


    文章目录

    • 前言
    • 一、Tensor数据类型简介
      • Tensor数据类型是什么?
      • Tensor数据类型有哪些
          • 指定调用的API生成相关数据类型
          • dtype属性指定Tensor内置的简单数据类型
    • 二、Tensor数据类型的基本使用
      • Tensor初始化
          • 基于list列表和nparray
      • Tensor相关API
          • 基于指定Tensor类型进行初始化
          • 基于Randn生成正态分布的Tensor
          • 基于Rand生成均匀分布的Tensor
          • torch.zeros/ones/empty
    • 三、Tensor数据类型特点
      • 1.几种数据类型的比较和说明
          • List和Nparray比较
          • Numpy和Tensor比较
    • 总结


    前言

    本文记录笔者在学习Pytorch过程中对tensor数据类型的整理和相关记录

    一、Tensor数据类型简介

    Tensor数据类型是什么?

    Tensor一词,在英文中指的是张肌,即一种肌肉纤维,在神经网络学习中,中文在很多文章中,通常将其称作张量

    要学习Tensor数据类型,我们先要搞清楚Tensor数据类型是什么,这里列出了一句官方文档给出的解释

    A torch.Tensor is a multi-dimensional matrix containing elements of a single data type.

    从这句话中不难看出,Tensor是一种矩阵数据类型,内部携带简单数据类型

    Tensor数据类型有哪些

    Pytorch的官方文档中给出了许多Tensor的数据类型,我们这里关注到32位的FloatTensor以及16位HalfTensor,前者在开发过程中使用频率较高,后者在GPU显存占用上具有独到的优势
    在这里插入图片描述
    在这里插入图片描述
    通常情况下,Tensor会根据初始化时传入的数据类型确定具体是哪种Tensor, 但我们也可以通过

    指定调用的API生成相关数据类型
    • FloatTensor
    import torch
    a = torch.FloatTensor(2,3)
    b = torch.FloatTensor([2,3,4,5])
    a,b
    
    • 1
    • 2
    • 3
    • 4
    • IntTensor
    import torch
    a = torch.IntTensor(2,3)
    b = torch.IntTensor([2,3,4,5])
    a,b
    
    • 1
    • 2
    • 3
    • 4
    dtype属性指定Tensor内置的简单数据类型
    randomTensor=torch.rand(2,3,dtype=torch.float)
    print(randomTensor)
    
    • 1
    • 2

    二、Tensor数据类型的基本使用

    Tensor初始化

    基于list列表和nparray

    我们可以通过传入Python的list列表和Numpy的nparray对一个Tensor数据类型进行初始化

    import numpy as np
    import torch
    
    floatTensor = torch.tensor([[1., -1.], [1., -1.]])
    print(floatTensor)
    npTensor = torch.tensor(np.array([[1, 2, 3], [4, 5, 6]]))
    print(npTensor)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    运行效果如下:
    在这里插入图片描述

    Tensor相关API

    基于指定Tensor类型进行初始化

    前文中已经列举了FloatTensor和IntTensor两种数据类型的初始化,这里就不进行赘述了

    基于Randn生成正态分布的Tensor

    返回一个张量,包含了从标准正态分布(均值为0,方差为1,即高斯白噪声)中抽取的一组随机数。张量的形状由参数sizes定义。

    randomTensor=torch.randn(2,3,dtype=torch.float)
    print(randomTensor)
    
    • 1
    • 2

    在这里插入图片描述

    基于Rand生成均匀分布的Tensor

    返回一个张量,包含了从区间[0, 1)的均匀分布中抽取的一组随机数。张量的形状由参数sizes定义。

    randomTensor=torch.rand(2,3,dtype=torch.float)
    print(randomTensor)
    
    • 1
    • 2

    在这里插入图片描述

    torch.zeros/ones/empty

    返回一个张量,zeros表示张量内全部都为0,ones表示张量内全部为1,empty则是生成一个张量,内部元素全部为空,只生成其大小

    三、Tensor数据类型特点

    1.几种数据类型的比较和说明

    List和Nparray比较
    • Numpy中的Nparray采用连续地址存储,原生list只能通过寻址方式找到下一种元素;这是因为Numpy制定了其存储的数据类型,可以统一分配内存空间,而List中的数据类型是确定的
      在这里插入图片描述
    • Nparray在科学计算方面性能远高于List, 可以省掉许多循环语句
    • Nparray支持并行化运算,底层采用C语言编写,接触了Python解释器的性能限制,所以效率远高于纯Python代码
    Numpy和Tensor比较

    Numpy和Tensor相比较,他们的区别主要有以下两点

    • Tensor 和 Numpy都是矩阵,区别是前者可以在GPU上运行,后者只能在CPU上;
    • Tensor可以直接通过print显示数据类型,而Numpy不可以

    需要注意的是,Tensor内部的数据类型为ndarray,而当运行在GPU上时,GPU不具有更改元素值的能力,所以Tensor内部元素的数值不可改变

    总结

    持续更新和完善中,欢迎大佬指正

  • 相关阅读:
    网络问题排障专题-AF网络问题排障
    Eclipse内存分析器 Java内存分析工具MAT(Memory Analyzer Tool)的介绍与使用
    golang使用mongo-driver操作——增(进阶)
    Spring cloud properties与yml配置说明
    第十四章《多线程》第5节:线程同步
    c# 同步异步锁
    c语言,用头插法建立单链表
    制造业数字化转型峰会,云盒子带来先进制造业数据安全解决方案
    UE4 回合游戏项目 11- 添加人物攻击动画
    发掘潜在用户利用xgboost进行产品营销响应预测
  • 原文地址:https://blog.csdn.net/qjyws/article/details/128160077
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | 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号