PyTorch¶
约 748 个字 36 行代码 预计阅读时间 3 分钟
Abstract
记录一些 PyTorch 相关的内容以及一些有用的 tricks
安装 ¶
推荐使用 Anaconda/Miniconda 创建虚拟环境安装 PyTorch
如果你只需要使用 CPU 版本的 PyTorch,那么后续的复杂步骤都不需要做,只需要运行以下两条指令中的一条即可
GPU 版本的 PyTorch 的安装流程如下 :
- 在终端输入
nvidia-smi
查看 NVIDIA 驱动的版本和支持的 CUDA 的最高版本
- 在终端输入
nvcc -V
查看本机安装的 CUDA 版本,如果提示该命令不存在,则需要去 NVIDIA 官网 下载 CUDA
$ nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2021 NVIDIA Corporation
Built on Fri_Dec_17_18:28:54:_Pacific_Standard_Time_2021
Cuda compilation tools, release 11.2, V11.2.152
Build cuda_11.2.r11.2/compiler.30794723_0
- 安装对应 CUDA 版本的 cudnn,官方下载地址为 cudnn download
- 下载 Anaconda/Miniconda,创建一个环境(e.g. pytorch),
Conda 的配置和使用可以参考 Conda 备忘录 - 在 PyToch 官网 找到对应平台和 CUDA 版本的安装指令 (e.g. cuda11.1)
- 安装完 PyTorch 后我们需要检验安装是否成功,且
CUDA DEVICE
是否可用
>>> import torch
>>> torch.__version__
'1.12.1'
>>> torch.cuda.is_available()
True
>>> torch.cuda.get_device_name()
'NVIDIA GeForce GTX 1660 Ti'
>>> from torch.backends import cudnn
>>> cudnn.is_available()
True
如果执行上述指令看到的结果一致,那么 PyTorch 已经成功安装
最后可以安装一些深度学习常用的 Package
基本语法 ¶
TODO: placeholder
常用模块 ¶
TODO: placeholder
TensorBoard¶
现在推荐使用的是 lanpa 大佬开发的 tensorboardX,一个完全支持 PyTorch 的 tensorboard 工具包,从而让 PyTorch 很好地调用 tensorboard 的数据可视化工具来监视神经网络训练的过程
官方文档:tensorboardX’s documentation
官方仓库:Github repo
安装 ¶
使用 ¶
需要用到 tensorboardX 中一个名为 SummaryWriter
的类
初始化 ¶
from tensorboardX import SummaryWriter
# 初始化,可以指定路径
writer1 = SummaryWriter()
writer2 = SummaryWriter("./logs")
记录数据 ¶
- tag: 数据标签,不同标签的数据使用不同曲线绘制
- scalar_value: 常量值
- global_step: 训练的 step
- walltime: 记录时间,默认为 time.time()
需要注意,这里的 scalar_value 必须为 float 类型,如果是 scalar tensor,则需要调用
tensor.item()
方法获取其数值
一般会使用add_scalar
方法来记录训练过程的 loss、accuracy、learning rate 等参数的变化,直观地监视训练过程
writer.add_scalar('Train/Loss', loss.data[0], niter)
writer.add_scalar('Test/Accu', correct/total, niter)
运行图 ¶
可以使用add_graph
方法来添加一个运行图,可视化一个神经网络
- model: 待可视化的网络模型
- input_to_model: 待输入神经网络的变量
添加图片 ¶
可以使用add_image
方法可视化图片
- tag: 数据标签
- img_tensor: 图像数据,是多维 tensor
- global_step: 训练的 step
- walltime: 记录时间,默认为 time.time()
嵌入向量 ¶
可以使用add_embedding
方法在二维或三维空间中可视化 embedding 向量
writer.add_embedding(mat, metadata=None, label_img=None, global_step=None, tag='default', metadata_header=None)
- mat: 二维矩阵,每行代表特征空间的一个数据点
- metadata: 一维列表,表示 mat 中每行数据的 label,大小应和 mat 行数相同
- label_img: 形如 NxCxHxW 的四维 tensor,对应 mat 中每一行数据显示出的图像,N 应和 mat 行数相同
- global_step: 训练的 step
- tag: 数据标签
导出 ¶
# export scalar data to JSON for external processing
writer.export_scalars_to_json("./all_scalars.json")
writer.close()
登陆 ¶
在命令行中运行以下指令即可打开 tensorboard