【Pytorch】学习记录分享2——Tensor基础,数据类型,及其多种创建方式

news2024/11/24 12:44:54

pytorch 官方文档

Tensor基础,数据类型,及其多种创建方式

      • 1. 创建 Creating Tensor: 标量、向量、矩阵、tensor
      • 2. 三种方法可以创建张量,一是通过列表(list),二是通过元组(tuple),三是通过Numpy的数组(array),基本创建代码如下:
      • 3. 张量类型, pytorch下的数组类型
      • 4. 张量特殊类型及其创建方法

1. 创建 Creating Tensor: 标量、向量、矩阵、tensor

#标量 scalar
scalar = torch.tensor(7)
scalar.ndim  # 查看维度
scalar.item() # 转换成 python中的整数 

#向量 vector
vector = torch.tensor([7, 7])
vector.shape #查看形状

#矩阵 matrix
MATRIX = torch.tensor([[7, 8], 
                       [9, 10]])

#随机tensor,下面是一些生成随机tensor的方法:[更多详细方法见博客](https://blog.csdn.net/Darlingqiang/article/details/134946446?spm=1001.2014.3001.5501)

在这里插入图片描述

2. 三种方法可以创建张量,一是通过列表(list),二是通过元组(tuple),三是通过Numpy的数组(array),基本创建代码如下:

import torch                                # 导入pytorch
import numpy as np                          # 导入numpy

print(torch.__version__)                    # 查看torch版本
t1 = torch.tensor([1,1])                    # 通过列表创建
t1 = torch.tensor((1,1))                    # 通过元组创建
t1 = torch.tensor(np.array([1,1])           # 通过数组创建
t1                                          # tensor([1, 1])

张量相关属性查看的基本操作,后期遇到的张量结构都比较复杂,难以用肉眼直接看出,因此相关方法用的也比较频繁

方法描述栗子🌰
ndim查看张量的维度,也可使用dim()t.ndim /t.dim()
dtype查看张量的数据结构t.dtype
shape查看张量的形状t.shape
size查看张量的形状,和shape方法相同t.size()
numel查看张量内元素的元素t.numel()

注:size()和numel()是需要加括号, 实例

t2 = torch.tensor([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
t2.ndim                             # 2
t2.dtype                            # torch.int64
t2.shape                            # torch.Size([3, 3])
t2.size()                           # torch.Size([3, 3])
t2.numel()                          # 返回9

3. 张量类型, pytorch下的数组类型

python作为动态语言,很少去注意到变量的类型,因为我们编写代码时并不需要声明变量类型,但是细心的小伙伴会发现,调用dtype后返回的是torch.int64, 这说明pytorch对于数组的类型是很严谨,因此我们还要了解在pytorch下的数组类型

注: 只需要记住有整数,浮点数,布尔型和复数即可

类型dtype
32bit浮点数torch.float32 或 torch.float
64bit浮点数torch.float64 或 torch.double
16bit浮点数torch.float16
8bit无符号整数torch.uint8
8bit有符号整数torch.int8
16bit有符号整数torch.int16 或 torch.short
32bit有符号整数torch.int32 或 torch.int
64bit有符号整数torch.int64 或 torch.long
布尔型torch.bool
复数型torch.complex64

在pytorch中,默认的张量整数类型是int64,使用浮点数类型是float32【不同版本pytorch可能不同】;

双精度double能存储的有效位数比单精度float更多,但相应的需要的存储空间越多

int16,int32,int64的区别主要在于表示值的范围不同,数字越大所能表示的范围越大

在pytorch中,可以使用在创建时指定数据类型,也可以后期进行修改,实例如下

t3 = torch.tensor([True, 1.0])              # tensor([1., 1.])隐式转换
t3 = torch.tensor([1,1,1,1],dtype=float)
t3.dtype                                    # torch.float64
t3.int()                                    # tensor([1, 1, 1, 1], dtype=torch.int32)
t3.byte()                                   # tensor([1., 1., 1., 1.], dtype=torch.float64)
t3.short()                                  # tensor([1, 1, 1, 1], dtype=torch.int16)
t3.bool()                                   # tensor([True, True, True, True])

4. 张量特殊类型及其创建方法

方法描述
torch.zeros()创建全为0的张量
torch.ones()创建全为1的张量
torch.eye()创建对角为1的单位矩阵
torch.diag(t)创建对角矩阵,需要传入1维张量
torch.rand()创建服从0-1均匀分布的张量
torch.randn()创建服从标准正态分布的张量
torch.normal()创建服从指定正态分布的张量
torch.randn创建服从标准正态分布的张量
torch.randint()创建由指定范围随机抽样整数组成的张量
torch.arange()创建给定范围内的连续整数组成的张量
torch.linspace()创建给定范围内等距抽取的数组成的张量
torch.empty()创建未初始化的指定形状的张量
torch.full()创建指定形状,指定填充数值的张量

需要注意有哪些方法是传入代表结构的列表,有哪些是传入张量,有哪些是传入数字,实例如下

torch.zeros([3,3])                      # 创建3行3列,元素全为0的2维张量
torch.ones([3,3])                   # 创建3行3列,元素全为1的2维张量
torch.eye(4)                          # 创建4行4列的单位矩阵

t = torch.tensor([1,2,3,4])   # 创建需要传入的1维张量
torch.diag(t)                 # 创建对角元素为1,2,3,4的对角矩阵

在这里插入图片描述

torch.rand([3,4])                           # 创建元素为0-1分布的3行4列张量
torch.normal(3, 4, [2, 2])      # 创建服从均值为3,标准差为4的正态分布元素组成的张量
torch.randn([3,4])                      # 创建元素为标准正态分布的3行4列张量

在这里插入图片描述

torch.randint(0,20,[3,4])     # 创建由0-20间的随机整数组成的3行4列的张量
torch.arange(1,20)            # 创建0-20内连续整数组成的张量

在这里插入图片描述


torch.linspace(1, 10, 5)      # 创建给定范围内等距取样的数组成的张量   1-10范围内,创建5个元素
torch.empty([3,4])            # 创建3行4列的未初始化张量
torch.full([3, 4], 2)         # 创建3行4列的全为2的张量

在这里插入图片描述

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

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

相关文章

22.Java程序设计-基于SpringBoot的批发零售业商品管理小程序系统的设计与实现

摘要: 批发零售业商品管理小程序系统的设计旨在提高批发商、零售商和管理员的业务效率,实现商品的高效管理、订单的快速处理以及库存的精准监控。本系统基于Spring Boot框架,利用其强大的特性和生态系统,结合小程序前端&#xff…

服务器数据恢复-raid5多块磁盘掉线导致上层卷无法挂载的数据恢复案例

服务器数据恢复环境: 一台服务器中有一组由24块FC硬盘组建的raid5磁盘阵列,linux操作系统ext3文件系统,服务器上层部署有oracle数据库。 服务器故障&检测: raid5阵列中有两块硬盘出现故障掉线,导致服务器上层卷无法…

【C++】optional的使用(一)

这篇文章介绍下C17引入的std::optional 为什么要有 optional 一般来说,如果想要一个函数返回“多个”值,C程序员倾向于使用结构体/类完成这个操作。即定义一个通用的结构体,在函数内部完成装填,然后返回一个实例化的结构体。 #…

Python项目——贪吃蛇

1、原理 整个界面由一个二维数组组成。游戏开始时,会随机生成一个苹果(红点)和一条蛇(黄点)。蛇会在二维数组中移动,当蛇碰到苹果时,苹果被吃,蛇的长度加一(红点变黄点&…

【数据结构】八大排序之直接插入排序算法

🦄个人主页:修修修也 🎏所属专栏:数据结构 ⚙️操作环境:Visual Studio 2022 一.直接插入排序简介及思路 直接插入排序(Straight Insertion Sort)是一种简单直观的插入排序算法. 它的基本操作是: 将一个数据插入到已经排好的有序表中,从而得到一个新的,数…

探索Nginx的奥秘--从代理到负载均衡的艺术实践

文章目录 🌺Nginx的引入🌺🌺深刻理解正向代理与反向代理🌺🌹Reverse proxy🌹🌹正向代理与反向代理的区别🌹🌹反向代理为什么叫反向代理🌹🌹负载均…

【DataSophon】大数据服务组件之Flink升级

🦄 个人主页——🎐开着拖拉机回家_Linux,大数据运维-CSDN博客 🎐✨🍁 🪁🍁🪁🍁🪁🍁🪁🍁 🪁🍁🪁&am…

Logstash访问安全访问Elasticsearch集群

生成logstash证书: opensal pkcs12 -in elastic-stack-ca.p12 -clcerts -nokeys > logafash.cer openssl x509 -in logstash.cer -out logstash.pem 编排配置文件

移动端Vant中的Calendar日历增加显示农历(节日、节气)功能

核心: 使用 js-calendar-converter 库实现 npm地址:js-calendar-converter 内部使用原生calendar.js, 中国农历(阴阳历)和西元阳历即公历互转JavaScript库,具体实现感兴趣的可自行查看其实现源码。 原日…

NAS搭建WebDAV服务同步Zotero科研文献

文章目录 一、Zotero安装教程二、群晖NAS WebDAV设置三、Zotero设置四、使用公网地址同步Zotero文献库五、使用永久固定公网地址同步Zotero文献库 Zotero 是一款全能型 文献管理器,可以 存储、管理和引用文献,不但免费,功能还很强大实用。 ​ Zotero 支…

c# bitmap压缩导致png不透明的问题解决

新建.net 6控制台项目 安装System.Drawing.Common包 代码如下 using System.Drawing; using System.Drawing.Imaging;namespace PngCompress02 {internal class Program{static void Main(string[] args){CompressPngImage("E:\Desktop\6.png", "E:\Desktop\6…

MySQL undo日志精讲

事务回滚的需求 我们说过事务需要保证原子性,也就是事务中的操作要么全部完成,要么什么也不做。但是偏偏有时候事务执行到一半会出现一些情况,比如: 情况一:事务执行过程中可能遇到各种错误,比如服务器本身…

基于ssm的简单学校课程管理系统的设计与实现(源码+调试)

项目描述 临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。今天给大家介绍一篇基于ssm的简单学校课程管…

智慧路灯杆如何实现雪天道路安全监测

随着北方区域连续发生暴雪、寒潮、大风等气象变化,北方多地产生暴雪和低温雨雪冰冻灾害风险,冬季雨雪天气深度影响人们出行生活,也持续增加道路交通风险。 智慧路灯杆是现代城市不可或缺的智能基础设施,凭借搭载智慧照明、环境监测…

读论文:Restormer: Efficient Transformer for High-Resolution Image Restoration

《Restormer: Efficient Transformer for High-Resolution Image Restoration》发表于2022年的CVPR,在 Transformer block 中进行了几个关键设计以提出一种新的高效的视觉 Transformer,称为 Restormer,再一次刷新了视觉 transformer 在高分辨…

山西电力市场日前价格预测【2023-12-16】

日前价格预测 预测说明: 如上图所示,预测明日(2023-12-16)山西电力市场全天平均日前电价为259.00元/MWh。其中,最高日前电价为333.74元/MWh,预计出现在18:00。最低日前电价为0.00元/MWh,预计出…

Intellij IDEA 运行maven报错误“CreateProcess error=2, 系统找不到指定的文件“的完美解决方案

一、问题背景 博主正常使用着Intellij IDEA,不知道为什么突然Intellij IDEA报错,错误提示如下: Error:Cannot run program "C:\Program Files\Java\jdk1.8.0_351" 观察Intellij IDEA报错的原因,我们可以知道&#xff1…

​FL Studio2024最新版本好不好用?有哪些新功能

FL Studio2024版是一款在国内非常受欢迎的多功能音频处理软件,我们可以通过这款软件来对多种不同格式的音频文件来进行编辑处理。而且FL Studio 2024版还为用户们准备了超多的音乐乐器伴奏,我们可以直接一键调取自己需要的音调。 FL Studio 2024版不仅拥…

一分钟解决:vscode卡在“设置SSH主机:VS Code-正在本地下载 VS Code 服务器”

问题:vscode之前可正常使用,更新之后,连接服务器卡住了。 解决:从CMD或者你的终端连接服务器,进入vscode-server目录下,删除一些文件夹就行,然后使用vscode重新链接,它会自动下载新…