Pytorch课程笔记(一)----张量数据类型

Pytorch课程笔记(一)张量数据类型

Python与Pytorch数据类型的区别联系

PythonPytorch
IntIntTensor of size()
floatFloatTensor of size()
Int arrayIntTensor of size[d1,d2,…]
float arryfloatTensor of size[d1,d2,…]
string

Python中的数据类型在Pytorch中都有相应的对应,相对来说比较特殊的是string

遗憾的是Pytorch不是一个完备的语言库,而是面向数据计算的GPU加速库,没有类建对string的支持

Pytorch对string的表示

虽然没有类建的库用来实现对string的处理,但是在NLP领域,通过深度学习,对讲一段话的内容进行识别,以下两种方法常用

1.One-hot (一种编码表示的方法)

  • [0,1,0,0,0,…]

例如:
[0,1]----->dog
[1,0]----->cat

在计算机中,字母A的表示是ASCII码表示0x41

在应用中,采用编码的方式,没办法表达语义之间的相关性
2. Embeding

  • Word2vec
  • glove

Pytorch类建数据类型

Pytorch类建数据类型
同一个数据,放在不同位置,数据类型是不同的

类型检查

#引入torch库
import torch

#随机生成生成均值为0,方差为1的2X3矩阵
a = torch.randn(2, 3)

#返回string类型
b = a.type()

#参数合法化检验
c = isinstance(a, torch.FloatTensor)
 
print(type(a))
print(a)
print(b)
print(c)

结果:
结果


同一个tensor部署在CPU和GPU上是不一样的

import torch
data = torch.randn(2, 3)

d = isinstance(data, torch.cuda.DoubleTensor)

print(d)

结果:
在这里插入图片描述
要想实现CPU到GPU需要一个数据的搬运,在进行数据比较,即为真

data = data.cuda()

x.cuda()会返回一个gpu上的引用

数据类型之零维——标量

#0维
torch.tensor(1.)

1.3是0维,但是[1.3]是一维,长度为1的Tensor

平时中计算的Loss就是Dimension为0的标量

如何得到标量的shape?
a = torch.tensor(1.)
b = len(a.shape)
c = a.size()

结果:
在这里插入图片描述

这里的a.shape和a.size()都会返回一个空list类型的size对象

数据类型之一维——张量

在这里插入图片描述
1、torch.tensor([])指定的是一个确定的一维张量
2、torch.FloatTensor(1)指定的是一个随机的一维张量
3、还可以使用numpy的方法指定一维张量
在这里插入图片描述

维数1的张量应用在哪些地方?

1、偏置(Bias)
在这里插入图片描述
2、线性输入(Linear Input)
将28X28的数据图片铺平成一个包含784个元素的一维张量

如何得到维数1的张量?
import torch
import numpy

a = torch.ones(2)
#b = torch.tensor([1, 1])

print(a)
print(a.shape)

结果:
在这里插入图片描述

数据类型之二维——张量

a = torch.randn(2, 3)

结果:
在这里插入图片描述
随机生成2行,3列的数组
在这里插入图片描述
这里的size(0)和shape[0]都表示取行,size(1)shape[1]表示取列

数据类型之三维——张量

a = torch.rand(1,2,3)

结果:
在这里插入图片描述
这里有三个[],表示一个三维张量
箭头所指的第一个括号表示1,代表元素只有一个

在文字处理方面应用广泛

数据类型之四维——张量

a = troch.rand(2,3,2,2)

结果:
在这里插入图片描述

在CNN中应用广泛

[b(branch), c(channel), h(height), w(width)]

补充

处理使用shape的方法外,还可以利用

a.numel()

numel是指tensor占用内存的数量
此外

a.dim()&a.shape

都可以返回维度

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值