新手教程
- 60分钟快速入门Pytorch
- Pytorch是什么?
- Autograd:自动分化
- 神经网络
- 训练分类器
60分钟快速入门Pytorch
- 张量
- Autograd求导
- nn 包
- 多GPU示例
PyTorch使用Torch模型
- 学习PyTorch与实例
学习PyTorch与实例
什么是PyTorch?
这是一个基于Python的科学计算包,主要分入如下2部分:
- 使用GPU的功能代替numpy
- 一个深刻的学习研究平台,提供最大的灵活性和速度
入门
张量
Tensors类似于numpy
的ndarrays
,另外还可以在GPU
上使用Tensors
来加速计算。
from __future__ import print_function
import torch
构造一个5x3矩阵,未初始化:
x = torch.Tensor(5, 3)
print(x)
输出:
1.00000e-36 *
0.0000 0.0000 0.0000
0.0000 0.1910 0.0000
0.1894 0.0000 2.0271
0.0000 0.0093 0.0000
0.0039 0.0000 0.1942
[torch.FloatTensor of size 5x3]
构造一个随机初始化的矩阵
x = torch.Tensor(5, 3)
print(x)
输出:
1.00000e-36 *
0.0000 0.0000 0.0000
0.0000 0.1910 0.0000
0.1894 0.0000 2.0271
0.0000 0.0093 0.0000
0.0039 0.0000 0.1942
[torch.FloatTensor of size 5x3]
获取矩阵的大小
print(x.size())
输出:
(5L, 3L)
提示:
torch.Size
实际上是一个元组,所以它支持相同的操作
操作
操作有多种语法。我们来看看下面的例子 语法一:
y = torch.rand(5, 3)
print(x + y)
输出:
0.6050 0.0465 0.6626
0.8219 0.6481 0.2022
0.0346 0.9443 0.8881
0.4288 0.7175 0.9279
0.4868 0.9976 0.2751
[torch.FloatTensor of size 5x3]
语法二:
print(torch.add(x, y))
输出:
0.8685 1.1023 1.4549
0.4700 1.1125 1.4969
0.7625 0.3434 0.8084
0.8114 1.0919 1.8061
1.5888 1.3338 0.9857
[torch.FloatTensor of size 5x3]
另外:定义一个输出张量
result = torch.Tensor(5, 3)
torch.add(x, y, out=result)
print(result)
输出:
0.8685 1.1023 1.4549
0.4700 1.1125 1.4969
0.7625 0.3434 0.8084
0.8114 1.0919 1.8061
1.5888 1.3338 0.9857
[torch.FloatTensor of size 5x3]
补充:in-place追加
# adds x to y
y.add_(x)
print(y)
输出:
0.0457 0.1247 0.5834
0.3273 0.5949 0.8044
0.7898 0.3060 0.1873
0.1682 0.8595 0.9096
0.2379 0.4539 0.5456
[torch.FloatTensor of size 5x3]
注意:
该变异就地张量的任何操作是后固定有 例如:`x.copy(y),
x.t_(),将改变
x`。
print(x[:, 1])
输出:
0.5700
0.4744
0.2796
0.5653
0.8713
[torch.FloatTensor of size 5]
最后说明: 100+张量的操作,包括移调,索引,切片,数学运算,线性代数,随机数等等被描述 在这里
Numpy转换
将Tensor转换为numpy数组
a = torch.ones(5)
print(a)
输出:
1
1
1
1
1
[torch.FloatTensor of size 5]
b = a.numpy()
print(b)
输出:
[ 1. 1. 1. 1. 1. ]
看看numpy数组的值如何变化。
a.add_(1)
print(a)
print(b)
输出:
2
2
2
2
2
[torch.FloatTensor of size 5]
[ 2. 2. 2. 2. 2.]
将numpy数组转换为Torch张量
看到如何更改np
阵列自动更改torch Tensor
import numpy as np
a = np.ones(5)
b = torch.from_numpy(a)
np.add(a, 1, out=a)
print(a)
print(b)
输出:
[ 2. 2. 2. 2. 2.]
2
2
2
2
2
[torch.DoubleTensor of size 5]
除了CharTensor
之外,CPU
上的所有传感器都支持转换为NumPy
并返回
CUDA传感器
可以使用该.cuda
功能将传感器移动到GPU上。
# let us run this cell only if CUDA is available
if torch.cuda.is_available():
x = x.cuda()
y = y.cuda()
x + y
脚本的总运行时间:(0分0.004秒)