pytorch官方文档学习01

写在前面:

  • print代码后注释即为代码打印结果

torch

属性

torch.is_tensor(obj)

输入:obj-数据对象

判断是否tensor

import torch

x=torch.tensor([1,2,3])
print(torch.is_tensor(x)) #True

#python自带接口
print(isinstance(x, torch.Tensor)) #True

torch.is_storage(obj)

测试obj是不是storage类型,如果是的话就返回True,否则返回False

import torch

x=torch.tensor([1,2,3])
print(torch.is_storage(x)) #False

扩展:什么是storage?

Storage类型是pytorch中的一个类型,它与tensor是对应的。
tensor 分为头信息区(Tensor)和存储区(Storage)。

  • 信息区(Tensor)主要存储tensor的形状(size)、步长(stride)、数据类型(type)等信息,其真正的数据保存为连续数组,存储在存储区(Storage)中。
  • 一般来说pytorch中tensor的数据很大,可能是成千上万的,所以我们信息区(Tensor)一般来说占用的内存比较少,主要内存的占用取决于tensor中元素的数目,也就是存储区(Storage)的大小。

其实说的通俗一点就是,我们的Tensor相当于一组描述符,可以类比为操作系统中的PCB,而Storage是我们真正的进程数据存放的位置。

一般来说,一个tensor对应一个storage,storage是在data之上封装的接口,便于我们进行使用。不同的tensor的头部信息一般是不同的,但是它们使用的Storage可能相同(也就是共享内存)。

torch.is_complex(obj)

此方法的意思是如果输入是一个复数数据类型(例如torch.complex64或者 torch.complex128)就返回True,否则返回False。

import torch

a = torch.tensor([1, 2], dtype=torch.float32)
b = torch.tensor([3, 4], dtype=torch.float32)
z = torch.complex(a, b)
print(z)  #tensor([1.+3.j, 2.+4.j])
print(torch.is_complex(z)) #True

pytorch创建复数Tensor的方法是torch.complex(real, imag,*,out=None),参数分别为实部、虚部、输出值,此方法返回的是一个复数的Tensor。

torch.is_conj(obj)

根据输入的张量返回一个共轭张量。这里所谓的共轭概念,主要是指复平面上,对于复轴的数的翻转。比方说3-4j的共轭为3+4j

torch.is_floating_point(obj)

判断给定的input中data的值是不是浮点类型(支持torch.float16torch.float32torch.float64

torch.is_nonzero(obj)

此方法的用途是测试一个单元素的tensor在进行类型转化后是不是为0。就是测试input是不是不为torch.tensor([0.])或者torch.tensor([0])或者torch.tensor([False])三个其中的一个。

torch.set_default_dtype(d)

输入:d(torch.dtype) – 浮点 dtype 作为默认值。 Torch.float32 或 torch.float64。

设置pytorch中浮点数的默认类型。pytorch中有很多浮点类型,例如torch.float16、torch.float32、torch.float64这些在初始化一个浮点tensor的时候是可以指定的,如果我们不指定,当 PyTorch 初始化时,它的默认浮点 dtype 是 torch.float32,此方法的作用就是指定pytorch默认给不指定浮点类型的浮点数哪个类型。

import torch

print(torch.tensor([1.2, 3]).dtype) #torch.float32
torch.set_default_dtype(torch.float64)
print(torch.tensor([1.2, 3]).dtype) #torch.float64

torch.get_default_dtype()

输入:无

获取当前默认的浮点类型 torch.dtype

import torch

print(torch.get_default_dtype()) #torch.float32

torch.set_default_tensor_type(t)

输入:t-浮点张量类型

image-20230228151604107

将默认类型设置为浮点张量类型。

Tensor有不同的数据类型,每种类型分别有对应CPU和GPU版本(HalfTensor除外)。默认的Tensor是FloatTensor,可通过torch.set_default_tensor_type修改默认tensor类型(如果默认类型为GPU tensor,则所有操作都将在GPU上进行),HalfTensor是专门为GPU设计的,相同元素个数使用的空间更少,解决显存不足的问题,但是由于精度不足可能会出现溢出的问题。

torch.numel(tensor)

输入:tensor

返回张量中元素的总数

import torch

a = torch.randn(1, 2, 3, 4, 5)
print(torch.numel(a)) #120

torch.set_printoptions(precision=None, threshold=None, edgeitems=None, linewidth=None, profile=None, sci_mode=None)

precision=None,此参数的意思是显示浮点tensor中元素的精度(显示到小数点后几位),默认是4

threshold=None,由于我们的进行训练网络时,tensor都会很大,里面的数据很多,不方便全部显示出来,显示超过一定的个数(注意是个数,是行数×列数,而不是行数或者列数)后就会进行折叠。此参数是指定tensor的数目超过多少时开始显示进行折叠。默认为1000。
edgeitems=None此参数也与折叠有关,折叠后只显示前面的数据和后面的数据,此参数设置显示的前面与后面的数据的行数(注意这里是行数而不是个数),默认为3,如上图折叠后头尾各显示3行,更改为5行后如下所示:

linewidth=None,此参数是指如果一行数据太多会插入换行符,此参数是指定每行的字符数(注意是字符数,不是数据的个数,这个一定要注意)到达多少时插入换行符,此参数对于显示时超过threshold而折叠的tensor并不适用。默认为80

profile=None:其实此方法就是一个比较简便的显示方法,它有三个选项,分别为default、short、full用来满足我们的显示。

sci_mode=None这方法是来指定显示的数字是否使用科学计数法,可以选择指定True或者False,如果选择None,那么是True还是False会由torch._tensor_str._Formatter来定义。值会自动的由框架来选择。一般默认为False

创建操作

截止计划:2023.02.28

参考

Fluid_ray的博客_CSDN博客-pytorch每日一学,pytorch入门领域博主

感谢大佬的博客,如何想要详细了解,请去大佬博客一看

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值