PyTorch | (1)初识PyTorch

PyTorch | (2)PyTorch 入门-张量


PyTorch 是一个基于 Python 的科学计算包,主要定位两类人群:

  • NumPy 的替代品,可以利用 GPU 的性能进行计算。
  • 深度学习研究平台拥有足够的灵活性和速度

Tensors (张量)

Tensor在PyTorch中负责存储基本数据,PyTorch针对Tensor也提供了相对丰富的函数和方法,所以PyTorch中的Tensor与NumPy的数组具有极高的相似性。Tensor是一种高层次架构,也不要明白什么是深度学习,什么是后向传播,如何对模型进行优化,什么是计算图等技术细节。更重要的是,在PyTorch中定义的Tensor数据类型可以在GPUs上进行运算,而且只需要对变量做一些简单的类型转换就能轻易实现。

Tensors 类似于 NumPy 的 ndarrays ,同时 Tensors 可以使用 GPU 进行计算。


from __future__ import print_function
import torch

构造一个5x3矩阵,不初始化。

x = torch.empty(5, 3)
print(x)

输出:

tensor(1.00000e-04 *[[-0.0000,  0.0000,  1.5135],[ 0.0000,  0.0000,  0.0000],[ 0.0000,  0.0000,  0.0000],[ 0.0000,  0.0000,  0.0000],[ 0.0000,  0.0000,  0.0000]])

构造一个随机初始化的矩阵:

x = torch.rand(5, 3)
print(x)

输出:

tensor([[ 0.6291,  0.2581,  0.6414],[ 0.9739,  0.8243,  0.2276],[ 0.4184,  0.1815,  0.5131],[ 0.5533,  0.5440,  0.0718],[ 0.2908,  0.1850,  0.5297]])

构造一个矩阵全为 0,而且数据类型是 long.

x = torch.zeros(5, 3, dtype=torch.long)
print(x)

输出:

tensor([[ 0,  0,  0],[ 0,  0,  0],[ 0,  0,  0],[ 0,  0,  0],[ 0,  0,  0]])

构造一个张量,直接使用数据:

x = torch.tensor([5.5, 3])
print(x)

输出:

tensor([ 5.5000,  3.0000])

创建一个 tensor 基于已经存在的 tensor。

x = x.new_ones(5, 3, dtype=torch.double)
# new_* methods take in sizes
print(x)x = torch.randn_like(x, dtype=torch.float)
# override dtype!
print(x)
# result has the same size

输出:

tensor([[ 1.,  1.,  1.],[ 1.,  1.,  1.],[ 1.,  1.,  1.],[ 1.,  1.,  1.],[ 1.,  1.,  1.]], dtype=torch.float64)
tensor([[-0.2183,  0.4477, -0.4053],[ 1.7353, -0.0048,  1.2177],[-1.1111,  1.0878,  0.9722],[-0.7771, -0.2174,  0.0412],[-2.1750,  1.3609, -0.3322]])

获取它的维度信息:

print(x.size())

输出:

torch.Size([5, 3])

注意

torch.Size 是一个元组,所以它支持左右的元组操作。

操作

在接下来的例子中,我们将会看到加法操作。

加法: 方式 1

y = torch.rand(5, 3)
print(x + y)

输出:

tensor([[-0.1859,  1.3970,  0.5236],[ 2.3854,  0.0707,  2.1970],[-0.3587,  1.2359,  1.8951],[-0.1189, -0.1376,  0.4647],[-1.8968,  2.0164,  0.1092]])

加法: 方式2

print(torch.add(x, y))

输出:

tensor([[-0.1859,  1.3970,  0.5236],[ 2.3854,  0.0707,  2.1970],[-0.3587,  1.2359,  1.8951],[-0.1189, -0.1376,  0.4647],[-1.8968,  2.0164,  0.1092]])

加法: 提供一个输出 tensor 作为参数

result = torch.empty(5, 3)
torch.add(x, y, out=result)
print(result)

输出:

tensor([[-0.1859,  1.3970,  0.5236],[ 2.3854,  0.0707,  2.1970],[-0.3587,  1.2359,  1.8951],[-0.1189, -0.1376,  0.4647],[-1.8968,  2.0164,  0.1092]])

加法: in-place

# adds x to y
y.add_(x)
print(y)

输出:

tensor([[-0.1859,  1.3970,  0.5236],[ 2.3854,  0.0707,  2.1970],[-0.3587,  1.2359,  1.8951],[-0.1189, -0.1376,  0.4647],[-1.8968,  2.0164,  0.1092]])

注意

任何使张量会发生变化的操作都有一个前缀 ‘’。例如:x.copy(y), x.t_(), 将会改变 x.

你可以使用标准的 NumPy 类似的索引操作

print(x[:, 1])

输出

tensor([ 0.4477, -0.0048,  1.0878, -0.2174,  1.3609])

改变大小:如果你想改变一个 tensor 的大小或者形状,你可以使用 torch.view:

x = torch.randn(4, 4)
y = x.view(16)
z = x.view(-1, 8)  # the size -1 is inferred from other dimensions
print(x.size(), y.size(), z.size())

输出

torch.Size([4, 4]) torch.Size([16]) torch.Size([2, 8])

如果你有一个元素 tensor ,使用 .item() 来获得这个 value 。

x = torch.randn(1)
print(x)
print(x.item())
tensor([ 0.9422])
0.9422121644020081

参考资料

1. http://pytorch123.com/SecondSection/what_is_pytorch/

2. https://zhuanlan.zhihu.com/p/36233589

PyTorch | (2)PyTorch 入门-张量相关推荐

  1. 【PyTorch】1入门——Tensor、自动微分、神经网络、PyTorch 图像分类

    PyTorch60min入门教程 1. PyTorch简介 2. 快速入门 2.1 安装与配置 2.2 PyTorch入门第一步 2.2.1 Tensor 2.2.2 自动微分 2.2.3 神经网络 ...

  2. pytorch学习-从入门到mnist(一)

    pytorch学习-从入门到mnist(一) 标签: pytorch 在学习过Tensorflow之后,其实学习pytorch并不是特别难,因为很多地方是相通的,可能每个库会有自己的深层特性,但是在初 ...

  3. 笔记 | PyTorch安装及入门教程

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文内容概述如何安装PyTorch以及PyTorch的一些简单操作 ...

  4. PyTorch深度学习入门与实战(案例视频精讲)

    作者:孙玉林,余本国 著 出版社:中国水利水电出版社 品牌:智博尚书 出版时间:2020-07-01 PyTorch深度学习入门与实战(案例视频精讲)

  5. PyTorch深度学习入门

    作者:曾芃壹 出版社:人民邮电出版社 品牌:iTuring 出版时间:2019-09-01 PyTorch深度学习入门

  6. PyTorch机器学习从入门到实战

    人工智能入门实践, 轻松玩转PyTorch框架. 校宝在线出品的书籍<PyTorch机器学习从入门到实战>发售了! 购书链接: 内容简介 近年来,基于深度学习的人工智能掀起了一股学习的热潮 ...

  7. PyTorch框架学习三——张量操作

    PyTorch框架学习三--张量操作 一.拼接 1.torch.cat() 2.torch.stack() 二.切分 1.torch.chunk() 2.torch.split() 三.索引 1.to ...

  8. pytorch深度学习入门笔记

    Pytorch 深度学习入门笔记 作者:梅如你 学习来源: 公众号: 阿力阿哩哩.土堆碎念 B站视频:https://www.bilibili.com/video/BV1hE411t7RN? 中国大学 ...

  9. YDOOK:Pytorch教程:tensor 张量内各个值同时相加一个数

    YDOOK:Pytorch教程:tensor 张量内各个值同时相加一个数 © YDOOK Jinwei Lin, shiye.work import torch import numpy as npt ...

最新文章

  1. Qt 学习之路:模型-视图高级技术
  2. EXP、IMP 命令详解
  3. 三星.android beam,三星S Beam取代Android Beam
  4. python创建线程_多种方法实现 python 线程池
  5. 计算机主机配置有哪些,电脑主机配置清单有哪些 电脑主机配置清单及价格
  6. [有限元]利用虚位移和虚力的定义、对称性推导弹性力学公式
  7. PS 利用置换滤镜制作动感水波字
  8. 软件测试启航篇:测试的分类
  9. CMMI模型对软件测试技术的扩充
  10. python进程与线程_Python 进程和线程
  11. Django之Django debug toolbar调试工具
  12. ipv6中ospfv3不再支持_超星尔雅《2020年考研英语全程班》2020第五章节测验题库及试题答案...
  13. html语言中的字体代码,html中让字体变红的代码
  14. 政务OA协同办公系统,助力数字政府建设
  15. 数字信号处理概览与框图
  16. 工厂模式之简单工厂、工厂方法与抽象工厂
  17. Spring Boot 集成 Prometheus
  18. 常见的http状态码以及https的通讯过程和DNS的解析过程
  19. 人到中年:“无爱、无话、无性”
  20. AD域创建及加入域的办法

热门文章

  1. [导入]用程序来还原数据库(一个遗留了两年的问题)
  2. 究竟是该采用面向服务结构,还是单体结构
  3. 面霸篇:高频 Java 基础问题(核心卷一)
  4. 实战 用户登录、session校验、分布式存储session
  5. Hive MetaStore 在快手遇到的挑战与优化
  6. 一文快速入门分库分表中间件 Sharding-JDBC (必修课)
  7. RocketMQ消息丢失场景及解决办法
  8. 漫画:腾讯面试题(盛最多水的容器)
  9. 一文完全理解定时器实现技术
  10. 查询增速200倍!看金融业数据库架构如何在蜕变中逆袭