写在前面:
输入:obj-数据对象
判断是否tensor
import torch
x=torch.tensor([1,2,3])
print(torch.is_tensor(x)) #True
#python自带接口
print(isinstance(x, torch.Tensor)) #True
测试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相当于一组描述符,可以类比为操作系统中的PCB,而Storage是我们真正的进程数据存放的位置。
一般来说,一个tensor对应一个storage,storage是在data之上封装的接口,便于我们进行使用。不同的tensor的头部信息一般是不同的,但是它们使用的Storage可能相同(也就是共享内存)。
此方法的意思是如果输入是一个复数数据类型(例如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。
根据输入的张量返回一个共轭张量。这里所谓的共轭概念,主要是指复平面上,对于复轴的数的翻转。比方说3-4j的共轭为3+4j
判断给定的input中data的值是不是浮点类型(支持torch.float16
、torch.float32
与torch.float64
)
此方法的用途是测试一个单元素的tensor在进行类型转化后是不是为0。就是测试input是不是不为torch.tensor([0.])
或者torch.tensor([0])
或者torch.tensor([False])
三个其中的一个。
输入: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.dtype
import torch
print(torch.get_default_dtype()) #torch.float32
输入:t-浮点张量类型
将默认类型设置为浮点张量类型。
Tensor有不同的数据类型,每种类型分别有对应CPU和GPU版本(HalfTensor除外)。默认的Tensor是FloatTensor,可通过torch.set_default_tensor_type修改默认tensor类型(如果默认类型为GPU tensor,则所有操作都将在GPU上进行),HalfTensor是专门为GPU设计的,相同元素个数使用的空间更少,解决显存不足的问题,但是由于精度不足可能会出现溢出的问题。
输入:tensor
返回张量中元素的总数
import torch
a = torch.randn(1, 2, 3, 4, 5)
print(torch.numel(a)) #120
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入门领域博主
感谢大佬的博客,如何想要详细了解,请去大佬博客一看