PyTorch学习笔记 1. 安装配置
本文学习资源《深度学习框架 PyTorch入门与实践》,陈云编著,电子工业出版社
一、 学习环境
- CentOS7
二、安装conda
wget https://repo.anaconda.com/archive/Anaconda3-2020.11-Linux-x86_64.sh
chmod +x Anaconda3-2020.11-Linux-x86_64.sh
./Anaconda3-2020.11-Linux-x86_64.sh
按提示安装即可。
三、安装PyTorch包
1. 新建一个conda虚拟环境
conda create -n pytorch python=3.7
conda env list
conda activate pytorch
2. 安装PyTorch包
pip install -i http://pypi.douban.com/simple/ --trusted-host=pypi.douban.com/simple torchvision
pip install --upgrade numpy
3. 测试
python
>>> import torch as t
没有报错则安装成功。
四、一些基本概念
1. Tensor
Tensor是PyTorch中重要的数据结构,可以理解为一个高维数组。表现形式可能是一个标量、一维数组、二维数组或更高维的数组。
Tensor和numpy的ndarrays类似,但Tensor可以使用GPU加速。
示例:
from __future__ import print_function
import torch as t
# 只分配空间,未执行初始化
x = t.Tensor(5,4)
print(x)
显示结果:
随机数初始化
from __future__ import print_function
import torch as t
x = t.rand(5,4)
print(x)
显示Tensor的形状
print(x.size())
Tensor加法
from __future__ import print_function
import torch as t
x = t.rand(5,4)
y = t.rand(5,4)
print(x)
print(y)
print(x+y)
加法还可以写成:
t.add(x,y)
或
result = t.Tensor(5,4)
t.add(x,y,out=result) # 输出到result变量
add_
- 如果使用 y.add(x) , y不改变,返回一个新值。
- 如果使用 y.add_(x) , 则y会改变。
GPU运算支持
if t.cuda.is_available():
x = x.cuda()
y = y.cuda()
print(x+y)
2. Autogra 自动微积分
PyTorch的Autograd模块实现了微分运算。
autograd.Variable是Autogra中的核心类,它内部封装了Tensor。Tensor在被封装为Variable后,可以调用它的.backward实现反向传播,自动计算所有梯度。
Variable的数据结构如下:
import torch
from torch.autograd import Variable
a=Variable(torch.Tensor([1]),requires_grad=True)
b=Variable(torch.Tensor([2]),requires_grad=True)
c=Variable(torch.Tensor([3]),requires_grad=True)
d=a+b
e=d+c
e.backward()
print(d.grad) # 中间梯度值不保存,为空
print(a.grad_fn) # 第一个节点的.grad_fn为空
print(e.grad_fn) # <AddBackward0 object at 0x7f88153d6250>