基于Pytorch的深度学习教程-什么是PyTorch?
程序员文章站
2022-06-06 10:34:07
...
PyTorch是一个基于python的科学计算包,主要针对两类人群:
- 作为NumPy的替代品,可以利用GPU的性能进行计算
- 作为一个高灵活性、速度快的深度学习平台
先使用anaconda安装pytorch,最好使用命令行方式,安装pytorch-gpu版本;
入门
张量
Tensor
(张量)类似于NumPy
的ndarray
,但还可以在GPU上使用来加速计算。
创建一个没有初始化的5*3矩阵:
import torch
x = torch.empty(5, 3)
print(x)
输出:
tensor([[2.2391e-19, 4.5869e-41, 1.4191e-17],
[4.5869e-41, 0.0000e+00, 0.0000e+00],
[0.0000e+00, 0.0000e+00, 0.0000e+00],
[0.0000e+00, 0.0000e+00, 0.0000e+00],
[0.0000e+00, 0.0000e+00, 0.0000e+00]])
直接从数据构造张量:
x = torch.tensor([5.5, 3])
print(x)
或者根据已有的tensor建立新的tensor。除非用户提供新的值,否则这些方法将重用输入张量的属性,例如dtype等:
x = x.new_ones(5, 3, dtype=torch.double) # new_* methods take in sizes
print(x)
x = torch.randn_like(x, dtype=torch.float) # 重载 dtype!
print(x) # 结果size一致
获取张量的形状:
print(x.size())
输出:
torch.Size([5, 3])
运算
一种运算有多种语法。在下面的示例中,我们将研究加法运算。
加法:形式一
x = torch.tensor([5.5, 3])
x = x.new_ones(5, 3, dtype=torch.double) # new_* methods take in sizes
y = torch.rand(5, 3)
# print(x + y)
加法:形式二
print(torch.add(x, y))
加法:给定一个输出张量作为参数
result = torch.empty(5, 3)
torch.add(x, y, out=result)
print(result)
加法:原位/原地操作(in-place)
# adds x to y
y.add_(x)
print(y)
桥接 NumPy
将一个Torch张量转换为一个NumPy数组是轻而易举的事情,反之亦然。
Torch张量和NumPy数组将共享它们的底层内存位置,因此当一个改变时,另外也会改变。
将torch的Tensor转化为NumPy数组
a = torch.ones(5)
print(a)
将NumPy数组转化为Torch张量
import numpy as np
a = np.ones(5)
b = torch.from_numpy(a)
np.add(a, 1, out=a)
print(a)
print(b)
CUDA上的张量
张量可以使用.to
方法移动到任何设备(device)上:
# 当GPU可用时,我们可以运行以下代码
# 我们将使用`torch.device`来将tensor移入和移出GPU
if torch.cuda.is_available():
device = torch.device("cuda") # a CUDA device object
y = torch.ones_like(x, device=device) # 直接在GPU上创建tensor
x = x.to(device) # 或者使用`.to("cuda")`方法
z = x + y
print(z)
print(z.to("cpu", torch.double)) # `.to`也能在移动时改变dtype
上一篇: 读取图像的六种方式
推荐阅读
-
基于pytorch深度学习环境配置
-
【教程】基于Ubuntu系统的PyTorch虚拟环境配置
-
深度学习零基础使用 PyTorch 框架跑 MNIST 数据集的第四天:单例测试
-
MTCNN的学习(基于pytorch)
-
(pytorch-深度学习系列)pytorch避免过拟合-dropout丢弃法的实现-学习笔记
-
深度学习pytorch基础入门教程(1小时)-自动梯度
-
基于深度学习的口罩识别与检测PyTorch实现
-
如何从0-1构建自己的”pytorch“(自己专属的深度学习框架)
-
“你什么意思”之基于RNN的语义槽填充(Pytorch实现)
-
Python深度学习pytorch神经网络填充和步幅的理解