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

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                          # 导入numpyprint(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.mzph.cn/news/221113.shtml

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

相关文章

bootstrap是什么

Bootstrap 是一个开源的前端框架,用于开发响应式布局、移动设备优先的web页面和应用。它包含了基于 HTML、CSS 和 JS 的设计模板,用于排版、表单、按钮、导航以及其他界面组件,以及可选的 JavaScript 插件。 Bootstrap 的主要特点包括&#…

java 家教管理系统Myeclipse开发mysql数据库web结构jsp编程计算机网页项目

一、源码特点 java 家教管理系统是一套完善的java web信息管理系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0&…

企业文档管理混乱?解密难题并找到高效解决方案!

由于大多数企业的内部文件都分散地存放在各员工电脑中,且没有使用文档管理系统,导致企业内部出现诸多文件安全隐患,例如: 1.文档分散存储在员工个人计算机中,当发生人事变动时文档常常遗失,且可能给企业造…

Ransac 算法的探索和应用

Ransac 算法python 应用和实现 Ransac 算法是一种常用的图像匹配算法,在参数估计领域也经常被使用到。针对估计各种曲线的鲁棒模型参数,效果显著。这里对ransac算法进行某些探索。 python program: import numpy as np import matplotlib.pyplot as p…

企业安全必备:ISO27001认证解密!

什么是ISO27001认证 ISO27001是国际标准化组织(ISO)制定的信息安全管理体系标准。该认证标准为企业提供了一套详细的流程和措施,以确保信息安全的保密性、完整性和可用性。通过ISO27001认证,企业可以建立和维护一个全面的信息安全…

【Jmeter】Jmeter基础7-Jmeter元件介绍之后置处理器

后置处理器主要用于处理请求之后的操作,通常用来提取接口返回数据 2.7.1、JSON JMESPath Extractor 作用:可以通过JmesPath语法提取所需要的值使用场景:取样器返回格式为jsonJmesPath语法:参考https://jmespath.org/tutorial.htm…

C++标准模板(STL)- 类型支持 (特性上的运算,变参的逻辑或元函数,std::disjunction)

类型特性 类型特性定义一个编译时基于模板的结构&#xff0c;以查询或修改类型的属性。 试图特化定义于 <type_traits> 头文件的模板导致未定义行为&#xff0c;除了 std::common_type 可依照其所描述特化。 定义于<type_traits>头文件的模板可以用不完整类型实…

怎么让mac右上角的时间不显示

时间成了影响工作效率和心态的一个东西&#xff0c;当我看不见时间的时候我是听命于我的平静而稳定的内心的&#xff0c;当时间时刻在我的眼前晃动的时候&#xff0c;我是慌乱而浮躁的&#xff0c;所以我决定在我工作的时候我不需要时间&#xff0c;我要听命于自己的状态&#…

2023自动化测试框架的设计原则你都知道吗?快来看!

1.代码规范 测试框架随着业务推进&#xff0c;必然会涉及代码的二次开发&#xff0c;所以代码编写应符合通用规范&#xff0c;代码命名符合业界标准&#xff0c;并且代码层次清晰。特别在大型项目、多人协作型项目中&#xff0c;如果代码没有良好的规范&#xff0c;那么整个框架…

自动化测试 (二) Web自动化测试原理

目前市面上有很多Web UI自动化测试框架&#xff0c;比如WatiN, Selinimu,WebDriver&#xff0c;还有VS2010中的Coded UI等等. 这些框架都可以操作Web中的控件&#xff0c;模拟用户输入&#xff0c;点击等操作&#xff0c;实现Web自动化测试。其实这些工具的原理都一样&#xf…

现代雷达车载应用——第2章 汽车雷达系统原理 2.3节 信号模型

经典著作&#xff0c;值得一读&#xff0c;英文原版下载链接【免费】ModernRadarforAutomotiveApplications资源-CSDN文库。 2.3 信号模型 雷达的发射机通常发出精心设计和定义明确的信号。然而&#xff0c;接收到的返回信号是多个分量的叠加&#xff0c;包括目标的反射、杂波…

1846_安全SPI

Grey 全部学习内容汇总&#xff1a;GitHub - GreyZhang/g_embedded: some embedded basic knowledge. 1846_安全SPI SPI是一种常见的通信方式&#xff0c;在汽车电子中比较常用。但是如果涉及到安全相关的设计&#xff0c;可能得考虑更多。而SPI协议本身没有很好的标准化&am…

Jtti:ubuntu怎么删除多余的内核?

在 Ubuntu 中&#xff0c;你可以使用以下步骤删除多余的内核&#xff1a; 1. 查看当前安装的内核版本&#xff1a; uname -r 此命令将显示当前正在使用的内核版本。 2. 列出已安装的内核&#xff1a; dpkg --list | grep linux-image 此命令将列出所有已安装的 Linux 内核镜像。…

819. 最常见的单词

819. 最常见的单词 Java&#xff1a;split() 过滤 class Solution {public String mostCommonWord(String paragraph, String[] banned) {String s paragraph.replaceAll("\\p{Punct}", " "); // 去除所有标点符号String arr[] s.split(" "…

Google视频广告的格式

Google是全球最大的搜索引擎和在线广告平台之一&#xff0c;也提供了广告服务&#xff0c;包括在其视频平台上展示视频广告。Google视频广告是一种强大的营销工具&#xff0c;可以帮助企业将品牌推广到更广泛的受众中。 Google视频广告的格式可以分为以下几种&#xff1a; 1、…

通俗易懂:插入排序算法全解析(C++)

插入排序算法是一种简单直观的排序算法&#xff0c;它的原理就像我们玩扑克牌时整理手中的牌一样。下面我将用通俗易懂的方式来解释插入排序算法的工作原理。 假设我们手上有一副无序的扑克牌&#xff0c;我们的目标是将它们从小到大排列起来。插入排序算法的思想是&#xff0…

Python循环代码性能优化的方法

循环代码优化&#xff0c;遵守下面三个原则可以大大提高运行效率&#xff0c;避免不必要的低效计算&#xff1a; 1.尽量减少循环内部不必要的计算 2.嵌套循环中&#xff0c;尽量减少内层循环的计算&#xff0c;尽可能向外提。 3.局部变量查询较快&#xff0c;尽量使用局部变量 …

vue整个页面可以拖拽导入文件

效果图 原理与源码 我们这里的思路是用ant组件库的upload组件&#xff0c;就是如下这个 用这个包裹住所有页面&#xff0c;你可以是包裹住App.vue&#xff0c;或者是你的homepage。但是这个涉及到一个问题&#xff0c;就是我们现在确实是可以拖拽导进来文件了&#xff0c;但是…

2.两数相加

借文引流&#xff1a;五点钟科技_大道至简系列,机器学习算法系列,学习经验分享-CSDN博客 欢迎大家阅览我的其它专栏。 题目&#xff1a; 给你两个 非空 的链表&#xff0c;表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的&#xff0c;并且每个节点只能存储 一位 数…

台式扫描电镜与落地式扫描电镜详细对比

随着材料科学和微纳技术的快速发展&#xff0c;扫描电子显微镜已成为研究微观结构的一种重要工具。根据外形体积的不同&#xff0c;扫描电镜可以分为两大类:落地式扫描电镜和台式扫描电镜。本文将从探测器、易操作性、安装环境和价格等多个方面对两者进行比较。 一、发展历史 …