二、pytorch核心概念:1.张量数据结构

本博客是阅读eat pytorch in 20 day第二章的个人笔记

1、张量数据结构

1. 张量的数据类型
首先,是数据类型的分类:
float: torch.float64 torch.float32 torch.float16
int:torch.int64 torch.int32 torch.int16 torch.int8
其它:torch.unit8 torch.bool
其次,数据类型的转换:

  1. torch.tensor(数据)如果未规定类型,则自动推断数据类型。整数默认为torch.int64类型,小数默认为torch.float32类型。
  2. torch.tensor(数据,dtype=类型)如果规定了类型,则为该类型
  3. 和2有同样效果的还有特定类型构造函数:torch.IntTensor()、torch.FloatTensor()、torch.BoolTensor()
  4. 不同类型进行转换:.float()、.type(类型)、.type_as(数据)。如:
i = torch.tensor(1); print(i,i.dtype)
x = i.float(); print(x,x.dtype) #调用 float方法转换成浮点类型
y = i.type(torch.float); print(y,y.dtype) #使用type函数转换成浮点类型
z = i.type_as(x);print(z,z.dtype) #使用type_as方法转换成某个Tensor相同类型

2. 张量的维度
张量.dim() 就是这个张量的维度
3. 张量的尺寸

  1. 张量.shape或张量.size()是这个张量每个维度的长度
  2. 张量.view(大小:如3,4)可以把张量从一个尺寸变到另一个尺寸,但只能转变语义和存储在行优先上一致的张量。否则需要用.contiguous().view(3,4),.contiguous()拷贝一份张量并将其按语义存储。
  3. 张量.reshape(大小)相当于 张量.contiguous().view(3,4)。能够在语义和存储在行优先上不一致(存储结构扭曲)时完成张量尺寸的变换。
    关于.view(大小:如3,4)和 张量.reshape(大小)的区别见:https://blog.csdn.net/qq_37828380/article/details/107855070

4. 张量和numpy数组
Tensor和numpy的相互转换:torch.from_numpy(numpy数组)和张量.numpy()。这两种方法关联的Tensor和numpy数组是共享数据内存的。如果对调用数据操作后返回到调用数据,二者都会改变。
用张量.clone()中断这种关联。
此外,用.item()和.tolist()把张量转换成python数值和列表。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值