前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >pytorch基础知识:张量(上)

pytorch基础知识:张量(上)

作者头像
用户6719124
发布2019-11-18 00:18:48
4710
发布2019-11-18 00:18:48
举报
文章被收录于专栏:python pytorch AI机器学习实践

1. python中的数据类型与pytorch中的数据类型

python中的Int类型、float类型、Int array类型和Float array类型在pytorch中分别对应于IntTensor类型、FloatTensor类型、IntTensor[一维, 二维...]类型和FloatTensor[一维, 二维...]类型。

而python中的string类型在pytorch中有两种表示方式:一种是One-hot类型、一种是Enbedding类型。

查看编码方式

首先引入pytorch包

代码语言:javascript
复制
import torch

构建一个2行3列呈高斯分布的矩阵

代码语言:javascript
复制
a = torch.randn(2, 3)

输出结果

代码语言:javascript
复制
tensor([[-0.0051,  1.7796, -0.6198],
        [-0.1944,  1.5188,  1.1523]])

显示a的类型:

代码语言:javascript
复制
print(type(a))

输出结果

代码语言:javascript
复制
<class 'torch.Tensor'>

换一种方式输出a的类型

代码语言:javascript
复制
print(a.type())

输出结果

代码语言:javascript
复制
torch.FloatTensor

可以看出a为浮点数类型

也可以使用代码来确认a的类型

代码语言:javascript
复制
print(isinstance(a, torch.FloatTensor))

输出结果为

代码语言:javascript
复制
True

若想确认a是否为整点数类型

代码语言:javascript
复制
print(isinstance(a, torch.IntTensor))

显然输出结果为

代码语言:javascript
复制
False

需要注意有时为实现加速,将任务放在cuda上运行,而即便是相同的数据,在cpu上运行和在cuda上运行是完全不一样的。

2. Tensor中最简单的类型:标量

标量应用最多的地方是用来计算Loss。

可以用torch.tensor方法表示标量

代码语言:javascript
复制
b = torch.tensor(1.)
print(b)

输出结果为

代码语言:javascript
复制
tensor(1.)

为查看数据的shape,可以用代码

代码语言:javascript
复制
print(a.shape)print(b.shape)

分别输出结果为

代码语言:javascript
复制
torch.Size([2, 3])
torch.Size([])

若想检验a和b的长度,输入代码

代码语言:javascript
复制
print(len(a.shape))
print(len(b.shape))

输出结果

代码语言:javascript
复制
2
0

若想表示出1维(dim=1)的张量,则需要在参数前加入方括号

代码语言:javascript
复制
c = torch.tensor([1.1])
print(c)
print(c.shape)

输出结果为

代码语言:javascript
复制
tensor([1.1000])
torch.Size([1])

又如

代码语言:javascript
复制
d = torch.tensor([1.1, 2.2])
print(d)
print(d.shape)

输出结果为

代码语言:javascript
复制
tensor([1.1000, 2.2000])
torch.Size([2])

前面都是制定数据,如果只指定数据维度的话

代码语言:javascript
复制
e = torch.FloatTensor(1)
print(e)
print(e.shape)

这里的1即表示指定维度为1

输出结果为

代码语言:javascript
复制
tensor([8.9082e-39])
torch.Size([1])

除用torch.tensor表示,也可以用numpy来表示

先引入numpy包

代码语言:javascript
复制
f = np.ones(1)
print(f)
print(f.shape)

结果为

代码语言:javascript
复制
[1.]
(1,)

又有从numpy导入到pytorch的代码

代码语言:javascript
复制
f = np.ones(1)
g = torch.from_numpy(f)
print(g)
print(g.shape)

结果为

代码语言:javascript
复制
tensor([1.], dtype=torch.float64)
torch.Size([1])

下节将介绍二维、三维标量的构建方法和如何应用。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-09-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 python pytorch AI机器学习实践 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档