飞道的博客

PyTorch深度学习(29)Pytorch code importance content

304人阅读  评论(0)

Pytorch 代码重要内容

1、pytorch-msssim

pip install pytorch-msssim 安装使用ssim计算结构相似性损失

2、torch


  
  1. torch.seed() 设置随机种子后,每次运行文件输出结果都一样,而不是每次随机函数生成的结果一样
  2. torch.manual_seed() 设置CPU生成随机数的种子,方便下次复现实验结果
  3. torch.squeeze() 对数据的维度进行压缩,去掉维数为 1的维度,参数为在哪个地方加维度 - 1是在最后一个维度处加维度, 0为在第一个维度处加维度
  4. torch.unsqueeze() 对数据维度进行扩充
  5. torch.stack 在指定维度对元素叠加
  6. 等待当前设备上所有流中的所有核心完成
  7. pytorch中,程序的执行是异步的 等待GPU上所有任务都完成
  8. torch.cuda.synchronize()

3、numpy

numpy不能读取CUDA tensor 需要将它转化为 CPU tensor

xxx.data.numpy() --> xxx.data.cpu().numpy()

4、operation

from torch.optim import Adam, lr_scheduler
lr_scheduler  
· step:学习率调整步长,每经过step_size学习率更新一次  
· gamma:学习率调整倍数  
· last_epoch:上一个epoch数,用于指示学习率是否需要调整,当last_epoch符合设定的间隔时就会调整学习率。当设置为-1时,学习率设置为初始值。  

5、matplotlib

matplotlib.use('agg') 控制绘图不显示  

6、nn.module

m.weight.data.normal_ 设置模型权重值和偏置值  
m.bias.data.normal_  
m.weight.data.fill_(1) 模型参数初始化1  
m.bias.data.zero_()  模型参数初始化为0   

7、遇到问题

1、plt显示灰度图出现Invalid shape问题

问题背景:tensorflow2.0.0中的Dataset转换为numpy,利用matplotlib进行显示。data的维度为[4, 256, 256, 1]

2、问题:'int' object has no attribute 'value'

可能是tensorflow版本的问题
解决方法: 将in_channels = inputs.shape[-1].value改为 in_channels = inputs.shape.as_list()[-1]
或者直接将 .value 去掉试试

3、问题:Tensorflow加载模型报错 Cannot assign a device for operation...

config = tf.ConfigProto(allow_soft_placement=True)
 with tf.Session(config=config) as sess:
     saver.restore(sess, "model-xxxx")

4、问 题:''tensorflow.python.framework.errors_impl.ResourceExhaustedError: OOM when allocating tensor with shape[?]'' 错误分析

这是tensorflow 一个经常性错误,错误的原因在于:显卡内存不够。
解决方法就是降低显卡的使用内存,途径有以下几种措施:

  1. 减少Batch 的大小
  2. 分析错误的位置,在哪一层出现显卡不够,比如在全连接层出现的,则降低全连接层的维度,把2048改成1042啥的
  3. 增加pool 层,降低整个网络的维度。
  4. 修改输入图片的大小

imshow cmap 
'Accent', 'Accent_r', 'Blues', 'Blues_r', 'BrBG', 'BrBG_r', 'BuGn', 'BuGn_r', 'BuPu', 'BuPu_r', 'CMRmap', 'CMRmap_r', 'Dark2', 'Dark2_r', 'GnBu', 'GnBu_r', 'Greens', 'Greens_r', 'Greys', 'Greys_r', 'OrRd', 'OrRd_r', 'Oranges', 'Oranges_r', 'PRGn', 'PRGn_r', 'Paired', 'Paired_r', 'Pastel1', 'Pastel1_r', 'Pastel2', 'Pastel2_r', 'PiYG', 'PiYG_r', 'PuBu', 'PuBuGn', 'PuBuGn_r', 'PuBu_r', 'PuOr', 'PuOr_r', 'PuRd', 'PuRd_r', 'Purples', 'Purples_r', 'RdBu', 'RdBu_r', 'RdGy', 'RdGy_r', 'RdPu', 'RdPu_r', 'RdYlBu', 'RdYlBu_r', 'RdYlGn', 'RdYlGn_r', 'Reds', 'Reds_r', 'Set1', 'Set1_r', 'Set2', 'Set2_r', 'Set3', 'Set3_r', 'Spectral', 'Spectral_r', 'Wistia', 'Wistia_r', 'YlGn', 'YlGnBu', 'YlGnBu_r', 'YlGn_r', 'YlOrBr', 'YlOrBr_r', 'YlOrRd', 'YlOrRd_r', 'afmhot', 'afmhot_r', 'autumn', 'autumn_r', 'binary', 'binary_r', 'bone', 'bone_r', 'brg', 'brg_r', 'bwr', 'bwr_r', 'cividis', 'cividis_r', 'cool', 'cool_r', 'coolwarm', 'coolwarm_r', 'copper', 'copper_r', 'cubehelix', 'cubehelix_r', 'flag', 'flag_r', 'gist_earth', 'gist_earth_r', 'gist_gray', 'gist_gray_r', 'gist_heat', 'gist_heat_r', 'gist_ncar', 'gist_ncar_r', 'gist_rainbow', 'gist_rainbow_r', 'gist_stern', 'gist_stern_r', 'gist_yarg', 'gist_yarg_r', 'gnuplot', 'gnuplot2', 'gnuplot2_r', 'gnuplot_r', 'gray', 'gray_r', 'hot', 'hot_r', 'hsv', 'hsv_r', 'inferno', 'inferno_r', 'jet', 'jet_r', 'magma', 'magma_r', 'nipy_spectral', 'nipy_spectral_r', 'ocean', 'ocean_r', 'pink', 'pink_r', 'plasma', 'plasma_r', 'prism', 'prism_r', 'rainbow', 'rainbow_r', 'seismic', 'seismic_r', 'spring', 'spring_r', 'summer', 'summer_r', 'tab10', 'tab10_r', 'tab20', 'tab20_r', 'tab20b', 'tab20b_r', 'tab20c', 'tab20c_r', 'terrain', 'terrain_r', 'turbo', 'turbo_r', 'twilight', 'twilight_r', 'twilight_shifted', 'twilight_shifted_r', 'viridis', 'viridis_r', 'winter', 'winter_r' 

8、命令行

 (1)、下载anaconda,并安装

在Anaconda目录中,打开Anaconda Prompt

分别输入python    及    conda
进入anaconda安装文件夹,同时按住shift和右键,打开Powershell窗口
输入jupyter notebook,如打不开,则需要复制 or copy and paste one of these URLs下的网址链接
new——> Python3    shift+enter键可运行代码

(2)、安装pytorch环境

conda create -n pytorch python=3.8 

(3)、安装环境后,切换环境 

conda activate pytorch
查看环境中的包列表
pip list


pytorch官网
https://pytorch.org/
NV显卡支持cuda
https://www.geforce.cn/hardware/technology/cuda/supported-gpus


cmd
nvidia-smi  查看驱动是否满足(需要终端以 管理员身份运行)  查看显卡驱动中的CUDA版本


https://blog.csdn.net/zzq060143/article/details/88042075
1、首先是添加清华镜像channel
2、安装的指令,主要是把官网指令后面的-c pytorch删掉,-c pytorch的意思是,
安装下载的channel强制为pytorch官网的channel。所以需要删除才能走清华镜像的channel

清华源安装
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 --set show_channel_urls yes
# reference
# https://mirror.tuna.tsinghua.edu.cn/help/anaconda/

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/

(4)、最后执行安装pytorch的命令即可  安装pytorch命令行

conda install pytorch torchvision torchaudio cudatoolkit=11.1 -c pytorch -c conda-forge
执行上方命令后即安装了torch,不需要再次安装

(5)、安装成功后运行python,进入python命令台

输入import torch,如果出现缺少包的情况,则pip install xxx   例如:pip install numpy

torch.cuda.is_available()——>输出:true    cude安装成功

9、相关命令 

Python文件:代码以块为一个整体运行,Python文件的块是所有行的代码
优点:通用,传播方便,适用于大型项目
缺点:需要从头运行
Python控制台:以任意行为块运行
优:显示每个变量属性  缺:不利于代码阅读及修改
Jupyter:以任意行为块进行
优:利于代码阅读及修改  缺:环境需要配置

(1)安装、创建命令 

pip install opencv-python    安装cv2包

pip install tensorboard        安装tensorboard (x轴步长,y轴值)
tensorboard --logdir=logs  事件文件所在文件夹名称
tensorboard --logdir=logs --port=6007  修改端口为6007


Settings——Editor——General——Code Completion代码补全——Match case匹配大小写

Ctrl + O  重写方法    ctrl+l 实现方法

conda create -n pytorch python=3.8         创建环境

conda update -n base -c defaults conda    更新conda

(2)查看conda中环境

conda env list    conda环境列表
conda info --envs    查看环境
conda remove --name env_name --all  删除环境
conda remove --name env_name package_name  删除环境中某个包
conda deactivate 环境名    关闭环境

python -m pip install --upgrade pip    更新pip

python --version  查看python版本

pip install -U numpy    升级numpy

安装tensorflow GPU版本(使用源下载速度更快)
pip install tensorflow-gpu -i https://pypi.doubanio.com/simple  默认安装的是2.6.0版本

pip uninstall tensorflow tensorflow-gpu    卸载tensorflow
pip install tensorflow-gpu==2.4.0 -i https://pypi.doubanio.com/simple 

(3)使用 PyTorch 查看 CUDA 和 cuDNN 版本

import torch
print(torch.__version__)
print(torch.version.cuda)
print(torch.backends.cudnn.version())

conda config --remove-key channels    恢复Anaconda源为默认

(4)查看tensorflow版本及是否是gpu版本

import tensorflow as tf
tf.__version__        # 此命令为获取安装的tensorflow版本
print(tf.__version__) # 输出版本
tf.test.is_gpu_available()

from tensorflow.python.client import device_lib
print(device_lib.list_local_devices())

缺失cudnn64_7.dll文件
安装了cudnn8.0以上版本以后,有时会出现报错Could not load dynamic library ‘cudnn64_7.dll’; dlerror: cudnn64_7.dll not found。这是因为cudnn8.0以上缺失cudnn64_7.dll文件。
解决方法:把C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\bin文件夹下的‘cudnn64_8.dll’复制一份并命名为为‘cudnn64_7.dll。’

(5)cmd中

where python     python的存放目录
where ipython    python交互工具
where pip               pip的位置目录

pip install cupy-cuda110
pip install cupy-cuda110==7.8.0
conda create -n chainer python==3.7
conda install -c conda-forge cupy cudatoolkit=10.1
python import cupy
pip install chainer
python  print(chainer.backends.cuda.available)  print(chainer.backends.cuda.cudnn_enabled)

import chainer
chainer.backends.cuda.available

 10、将py文件打包为exe文件

pip install pyinstaller  
如果比较慢可以换清华源pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyinstaller  

执行打包命令:pyinstaller -F xx/xx/xx.py  
备注:如果是根目录下的.py文件,无需设置目录  

最后,生成的exe文件会在dist文件夹中,同时生成有build文件夹  

想打包为独立单一的.exe文件,使用-F参数  
pyinstaller -F myscript.py  

默认生成的执行文件执行时,会弹出一个命令行的窗口,如果不需要弹出,可以再加个-w参数  
pyinstaller -F -w myscript.py  

pyInstaller -F -w -p /dir1/;/dir2/ -i /dir3/icon.ico ***.py

**遇到问题**  
ModuleNotFoundError  
**重点:需要打包引入自定义库文件夹的父类文件夹**  
**主程序所在文件目录下进行打包**


默认模块:会在site-packages  
自己指定的目录:通过-P DIR DIR为需要的模块路径  如pyinstaller -F -w -p DIR myscript.py  
多个模块路径:pyinstaller -p DIR1:DIR2:DIR3 myscript.py或pyinstaller -p DIR1 -p DIR2 -p DIR3 myscripy.py  
就用分号隔开如:pyinstaller -F -p E:\python\clpicdownload\venv\Lib\site-packages;E:\python\clpicdownload\venv\Lib\site-packages mypython.py

有时候并不是找不到模块,而是代码中有些模块是隐含导入的,这样的话就需要指出这些模块,才能正确的打包,可以在命令行打包时使用参数--hidden-import MODULENAME指定模块名,或者可以在打包后生成的myscript.spec文件中修改,该文件中有个参数hiddenimports=[]

配置为:
hiddenimports=['cython','sklearn','sklearn.ensemble','sklearn.tree._utils','scipy._lib.messagestream']
然后再运行以下命令
pyinstaller myscript.spec


转载:https://blog.csdn.net/jiangyangll/article/details/127601586
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场