东方耀AI技术分享

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 2932|回复: 6
打印 上一主题 下一主题

[PyTorch] 01、PyTorch是什么?

[复制链接]

1365

主题

1856

帖子

1万

积分

管理员

Rank: 10Rank: 10Rank: 10

积分
14435
QQ
跳转到指定楼层
楼主
发表于 2020-4-9 16:22:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
PyTorch是什么?
基于Python的科学计算包,服务于以下两种场景:


作为NumPy的替代品,可以使用GPU的强大计算能力
提供最大的灵活性和高速的深度学习研究平台




Tensors与Numpy中的 ndarrays类似,但是在PyTorch中 Tensors 可以使用GPU进行计算


根据现有的张量创建张量。 这些方法将重用输入张量的属性,例如, dtype,除非设置新的值进行覆盖


x = x.new_ones(5, 3, dtype=torch.double)      # new_* 方法来创建对象




使用size方法与Numpy的shape属性返回的相同,张量也支持shape属性
`torch.Size`` 返回值是 tuple类型, 所以它支持tuple类型的所有操作


# adds x to y
y.add_(x)


任何 以``_`` 结尾的操作都会用结果替换原变量. 例如: ``x.copy_(y)``, ``x.t_()``, 都会改变 ``x``.


torch.view: 可以改变张量的维度和大小


译者注:torch.view 与Numpy的reshape类似


NumPy 转换
将一个Torch Tensor转换为NumPy数组是一件轻松的事,反之亦然。


Torch Tensor与NumPy数组共享底层内存地址,修改一个会导致另一个的变化。


NumPy Array 转化成 Torch Tensor


使用from_numpy自动转化


所有的 Tensor 类型默认都是基于CPU, CharTensor 类型不支持到 NumPy 的转换.




使用.to 方法 可以将Tensor移动到任何设备中


device = torch.device("cuda")
x = x.to(device)       # 或者直接使用``.to("cuda")``将张量移动到cuda中
z.to("cpu", torch.double)






让天下人人学会人工智能!人工智能的前景一片大好!
回复

使用道具 举报

1365

主题

1856

帖子

1万

积分

管理员

Rank: 10Rank: 10Rank: 10

积分
14435
QQ
沙发
 楼主| 发表于 2020-4-10 09:46:07 | 只看该作者
张量的英文是Tensor,它是PyTorch里面基础的运算单位,与Numpy的ndarray相同都表示的是一个多维的矩阵。 与ndarray的最大区别就是,PyTorch的Tensor可以在 GPU 上运行,而 numpy 的 ndarray 只能在 CPU 上运行,在GPU上运行大大加快了运算速度
让天下人人学会人工智能!人工智能的前景一片大好!
回复

使用道具 举报

1365

主题

1856

帖子

1万

积分

管理员

Rank: 10Rank: 10Rank: 10

积分
14435
QQ
板凳
 楼主| 发表于 2020-4-10 09:46:15 | 只看该作者
张量的英文是Tensor,它是PyTorch里面基础的运算单位,与Numpy的ndarray相同都表示的是一个多维的矩阵。
与ndarray的最大区别就是,PyTorch的Tensor可以在 GPU 上运行,而 numpy 的 ndarray 只能在 CPU 上运行,在GPU上运行大大加快了运算速度
让天下人人学会人工智能!人工智能的前景一片大好!
回复

使用道具 举报

1365

主题

1856

帖子

1万

积分

管理员

Rank: 10Rank: 10Rank: 10

积分
14435
QQ
地板
 楼主| 发表于 2020-4-10 09:48:45 | 只看该作者
在同构的意义下,第零阶张量 (r = 0) 为标量 (Scalar),
第一阶张量 (r = 1) 为向量 (Vector),
第二阶张量 (r = 2) 则成为矩阵 (Matrix),
第三阶以上的统称为多维张量。

其中要特别注意的就是标量
让天下人人学会人工智能!人工智能的前景一片大好!
回复

使用道具 举报

1365

主题

1856

帖子

1万

积分

管理员

Rank: 10Rank: 10Rank: 10

积分
14435
QQ
5#
 楼主| 发表于 2020-4-10 09:50:14 | 只看该作者
Tensor的基本数据类型有五种:

32位浮点型:torch.FloatTensor。 (默认)
64位整型:torch.LongTensor。
32位整型:torch.IntTensor。
16位整型:torch.ShortTensor。
64位浮点型:torch.DoubleTensor。
除以上数字类型外,还有 byte和chart型
让天下人人学会人工智能!人工智能的前景一片大好!
回复

使用道具 举报

1365

主题

1856

帖子

1万

积分

管理员

Rank: 10Rank: 10Rank: 10

积分
14435
QQ
6#
 楼主| 发表于 2020-4-10 09:53:15 | 只看该作者
Tensor和numpy对象共享内存,所以他们之间的转换很快,而且几乎不会消耗什么资源。但这也意味着,如果其中一个变了,另外一个也会随之改变
让天下人人学会人工智能!人工智能的前景一片大好!
回复

使用道具 举报

1365

主题

1856

帖子

1万

积分

管理员

Rank: 10Rank: 10Rank: 10

积分
14435
QQ
7#
 楼主| 发表于 2020-4-10 09:58:54 | 只看该作者
初始化
Pytorch中有许多默认的初始化方法可以使用
# 使用[0,1]均匀分布随机初始化二维数组
rnd = torch.rand(5, 3)
one = torch.ones(2, 2)
zero=torch.zeros(2,2)
#初始化一个单位矩阵,即对角线为1 其他为0
eye=torch.eye(2,2)
PyTorch中对张量的操作api 和 NumPy 非常相似,如果熟悉 NumPy 中的操作,那么 他们二者 基本是一致的
让天下人人学会人工智能!人工智能的前景一片大好!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|人工智能工程师的摇篮 ( 湘ICP备2020019608号-1 )

GMT+8, 2024-4-29 11:56 , Processed in 0.192514 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表