Pytorch框架学习---小技巧更新ing......
本节主要讲述运用Pytorch框架时的一些额外的小知识点,例如如何使用anaconda设置虚拟环境、深度学习模型的正常流程图、如何输出模型框架及其参数等等。 会一直持续更新整理这些小技巧,方便后来者查看学习。 |
1.使用anaconda设置虚拟环境(ubuntu系统)
鉴于最近复现别人的代码,所需要的环境都不一致,故采取虚拟环境,这样就可以切换自如😉!:话不多说,直接上流程图!!
(1)第一步:安装anaconda
① 打开官网https://www.anaconda.com/download/#linux,下载对应平台的版本:
② 进入安装包.sh文件所在的文件夹,打开终端,输入:
bash 该文件名.sh
③ 检查是否安装成功
-
终端输入 python,如果有anaconda标识,即成功
-
终端输入 conda -V,如果出现conda 4.5这样的信息,则代表环境配置成功(安装的时候貌似系统直接帮你配置了)
(2)第二步:创建虚拟环境(我是在pycharm的终端运行的)
①先创建虚拟环境
conda create -n 环境名称 python=版本号
# 如:conda create -n my_env python=3.5
conda create -n xxx --clone xxx(已有环境) # conda环境的复制
②然后进入该虚拟环境
conda activate my_env # 进入 貌似可能对应conda版本???也可以采用source activate my_env 激活进入
conda deactivate # 退出当前虚拟环境
补充:
conda info -e # 查看当前ubuntu下有哪些虚拟环境
conda remove -n 环境名称 --all # 删除虚拟环境
conda install cudatoolkit=10.1
conda install cudnn=7.6.5 # or conda install cudnn 自动匹配版本
(3)第三步:在该虚拟环境下,设置所需要的安装包(pytorch、torchvision)
这里比较复杂了,只以pytorch安装为例:
(利用conda install相关包时,可能会出现没有该依赖包的情况,例如:conda install opencv-python,就无法安装,此时应当直接输入conda install opencv,所以大家可以依实际情况自行百度寻找对应的安装代码)
由于网速巨慢,采用conda install pytorch torchvision cudatoolkit=10.0 -c pytorch(官方给的安装代码,根据自己实际情况选择版本号)时,安装失败,出现如下提示:
将该网址复制到浏览器中,会自动下载一个.tar.bz2文件,下载完成后,进入该文件所在位置,打开终端:
conda install --offline xxxxx.tar.bz2 # 离线安装完毕
# 如果是下载whl文件,通过 例如以下命令离线安装
pip install torch-1.4.0-cp37-cp37m-manylinux1_x86_64.whl
或者采用镜像源,打开pycharm的终端,输入:
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
conda config --set show_channel_urls yes#下载时显示文件来源
conda install pytorch torchvision cudatoolkit=10.0 # 注意这里就没有-c pytorch了!!!!!!!!
安装完成!,输入conda list就可以查看当前虚拟环境下所安装的依赖包有哪些。
上面对应的命令可以查看官方对应版本号命令
(4)第四步,测试是否安装好环境,同时查看cuda(是本地还是虚拟环境中的)
(要注意!!!!显卡和pytorch版本也有联系!!!老泪纵横~)
import torch
print(torch.cuda.is_available())
print(torch.version.cuda)
(5)conda创建虚拟环境或install报错“ProxyError”
具体报错:“ProxyError: Conda cannot proceed due to an error in your proxy configuration.Check for typos and other configuration errors in any '.netrc' file in your home directory,any environment variables ending in '_PROXY', and any other system-wide proxy configuration settings.”
解决方法:本人没有开代理,但是调用了清华镜像源,最后发现:删除该镜像配置文件即可:
rm .condarc
2.模型搭建的正常流程
-
首先对输入数据进行预处理(参考Pytorch框架学习---(2)输入数据操作);
-
接着搭建深度学习网络;
-
然后定义损失函数(参考Pytorch框架学习---(3)封装的18种损失函数,也可自己定义);
-
定义优化函数(参考Pytorch框架学习---(4)优化器Optimizer);
-
最后进行迭代训练。
3.输出网络模型及其参数大小
from torchsummary import summary # 引入torchsummary包中summary函数
# ===============Step 2/5 构建模型==================
net = Handwritten_Model(num_class=class_num)
net.init_weight() # Handwritten_Model模型中自己定义的初始化权重函数
'''打印网络'''
summary(net, input_size=(3,75,75), device='cpu') # 注意device选项,默认是'cuda'
输出结果如下,可以看到总共输出 五个部分 :网络层架构、每一层的输出大小、每一层的参数、总网络参数、所耗内存大小:
4.如何保证消融(改进)实验更具对比性?(固定初始化参数)
在主函数下,设置固定随机种子(运行数据预处理之前)。注意:这里设置固定后,并不是说在这一次运行下每次随机数都一样,而是说,每次运行的每次随机数是一样的。
# ===============设置参数==================
def setup_seed(seed):
torch.manual_seed(seed)
torch.cuda.manual_seed_all(seed)
np.random.seed(seed)
random.seed(seed)
torch.backends.cudnn.deterministic = True # 一定要加上这一行
set_seed(20)