美文网首页
PyTorch-torch03:tensor.type and

PyTorch-torch03:tensor.type and

作者: 罗泽坤 | 来源:发表于2020-04-07 22:44 被阅读0次
import torch
torch.cuda.is_available()
True

torch.Tensor
torch.Tensor是一种包含单一数据类型元素的多维矩阵。

Torch定义了七种CPU张量类型和八种GPU张量类型:

Data tyoe CPU tensor GPU tensor
32-bit floating point->>torch.FloatTensor->torch.cuda.FloatTensor 64-bit floating point->>torch.DoubleTensor->torch.cuda.DoubleTensor 16-bit floating point->>N/A ->torch.cuda.HalfTensor 8-bit integer (unsigned)->>torch.ByteTensor->torch.cuda.ByteTensor 8-bit integer (signed)->>torch.CharTensor->torch.cuda.CharTensor 16-bit integer (signed)->>torch.ShortTensor->torch.cuda.ShortTensor 32-bit integer (signed)->>torch.IntTensor->torch.cuda.IntTensor 64-bit integer (signed)->>torch.LongTensor->torch.cuda.LongTensor

torch.Tensor是默认的tensor类型(torch.FlaotTensor)的简称

a = torch.Tensor([[1,2,3],[4,5,6]])
print(a)
print(a.dtype)
tensor([[1., 2., 3.],
        [4., 5., 6.]])
torch.float32

没一个张量tensor都有一个相应的torch.Storage保存数据,张量提供了一个横向的、多维的视图储存,并定义了数字操作.

注意: 改变张量的方法可以用一个下划线后缀来标示。比如,torch.FloatTensor.abs_()会在原地计算绝对值并返回修改的张量,而tensor.FloatTensor.abs()将会在新张量中计算结果。torh.ops能够实现的基本上都能够用tensor.ops()或tensor.ops_()实现这是张量的直接运算形式

torch.Storage

torch.Storage是单个数据类型的连续的一维数组每个torch.Tensor都具有心相通数据类型的相应储存

class torch.FloatStorage 其中方法说明
byte():将Storage转为byte类型
char():将Storage转为char类型
clone():返回Storage的副本
copy_()
cpu():如果尚未在CPU上,则返回Storage的CPU副本
cuda(device=None, async=False):在CUDA内存中返回此对象的副本。如果该对象已经在CUDA内存中,并且在正确的设备上,则不会执行任何操作,并返回原始对象。 参数说明:
device (int) - 目标GPU的id。默认值是当前设备。
async (bool) -如果值为True,且源在锁定内存中,则副本相对于宿主是异步的。否则此参数不起效果。
data_ptr(): 返回一个时间戳
double():将Storage转为double类型
element_size():返回参数的size
fill_()
float():将Storage转为float类型
from_buffer()
half():将Storage转为half类型
int():将Storage转为int类型
is_cuda = False
is_pinned()
is_shared()
is_spars = False
long():将Storage转为long类型
new()
pin_memory():将存储复制到固定内存(如果尚未固定)。
resize_()
share_memory_():这对于已经在共享内存和CUDA存储器中的存储器是无效的,不需要为了跨进程共享而移动。无法调整共享内存中的存储空间。返回:self
short():将Storage转为short类型
size():返回Storage转的大小
tolist():返回一个包含Storage中元素的列表
type(new_type=None, async=False):将此对象转为指定类型。如果已经是正确类型,不会执行复制操作,直接返回原对象。
参数说明:

new_type (type或string) -需要转成的类型
async (bool) -如果值为True,并且源处于固定内存中,目标位于GPU上,反之亦然,则相对于主机异步执行该副本。否则,参数没有效果。
具体使用教程请参考:使用torch.Storage共享多个张量的相同存储以及将torch.Tensor转化为torch.Storage

x = torch.randn(3,3)
print(x)
tensor([[-0.0655,  0.4594,  0.0536],
        [-0.7390,  1.0493,  0.0938],
        [-0.6255,  0.7376,  0.9421]])
print(x.storage())
print(x.storage().dtype)
 -0.06551788747310638
 0.45938602089881897
 0.053568035364151
 -0.7390248775482178
 1.0493110418319702
 0.09382849931716919
 -0.625450074672699
 0.7376147508621216
 0.9421073794364929
[torch.FloatStorage of size 9]
torch.float32

相关文章

网友评论

      本文标题:PyTorch-torch03:tensor.type and

      本文链接:https://www.haomeiwen.com/subject/jrkaphtx.html