写在前面:
这篇博文是一个pytorch初学者的整理笔记,关于PyTorch中的张量数据类型及其代码示例的内容,如有不对还请大家批评指正。
注意:
代码中的# In
# In
是输入的代码;
代码中的# Out
# Out
是输出的结果,只是为了方便展示,写在了一起。
目录
1.类型
对于python中的所有数据类型pyTorch都有一一的对应(除了string类型);
对于string类型,有两种编码方法:
2.pytorch中张量的语法
3.类型检验
三种方法:
# 法一
a.type()
# 法二
type(a)
# 法三
isinstance(a, torch.FloatTensor) # 返回值为一个布尔值
小技巧:x.cuda()会返回一个gpu上的引用
举例:
# In
isinstance(data, torch.cuda.DoubleTensor)
# Out
False
# In
data = data.cuda()
# In
isinstance(data, torch.cuda.DoubleTensor)
# Out
True
4.创建Tensor的代码示例
(1)0维Tensor(标量的表示)
注意:pytorch0.3版本以前的没有0维张量的表示,统一都是1维
创建标量的举例:
# In
torch.tensor(1.) # 标量1.0
# Out
tensor(1.)
# In
torch.tensor(1.3) # 标量1.3
# Out
tensor(1.300)
标量类型的检验:
# In
a = torch.tensor(2.2) # 标量1.0
# In
a.shape
# Out
torch.Size([])
# In
len(a.shape)
# Out
0
# In
a.size()
# Out
torch.Size([])
(2)1维Tensor
##############法一######################
# 注意:.tensor接受的是数据的内容
# In
torch.tensor([1.1]) # 一维数据
# Out
tensor([1.1000])
# In
torch.tensor([1.1, 2.2])
# Out
tensor([1.1000, 2.2000])
###############法二#######################
# 注意:.FloatTensor接受的是数据的shape
# In
torch.FloatTensor(1) # 一维数据
# Out
tensor([3.2239e-25])
# In
torch.FloatTensor(2) # 一维数据
# Out
tensor([3.2239e-25, 4.5925e-41])
###############法三#######################
# 数组从numpy引入
# In
data = np.ones(2)
# In
data
# Out
array([1., 1.])
# In
torch.from_numpy(data) # 数组从numpy引入的语法
# Out
tensor([1., 1.], dtype=torch.float64)
(3)2维Tensor
# In
a = torch.randn(2, 3) # 一维数据
# In
a
# Out
tensor([[-0.4423, 0.5949, 1.1440],
[-2.0935, 0.2051, 1.2781]])
# In
a.shape
# Out
torch.Size([2, 3])
# In
a.size(0)
# Out
2
# In
a.size(1)
# Out
3
# In
a.shape[1]
# Out
3
(4)3维Tensor
# In
a = torch.rand(1, 2, 3) # 一维数据
# In
a
# Out
tensor([[[0.0764, 0.2590, 0.9816], [0.6789, 0.1568, 0.7919]]])
# In
a.shape
# Out
torch.Size([1, 2, 3])
# In
a[0]
# Out
tensor([[0.0764, 0.2590, 0.9816], [0.6789, 0.1568, 0.7919]])
# In
a.size(1)
# Out
3
# In
list(a.shape)
# Out
[1, 2, 3]
(5)4维Tensor