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


    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

  • 相关阅读:
    神秘字符(acm模式)
    文章本天成|跟我一起来一场简洁易懂的servlet的过滤器Filter的学习吧
    Java中如何使用策略模式减少 if / else 分支的使用
    支付宝证书到期更新完整过程
    [附源码]JAVA毕业设计互联网保险网站(系统+LW)
    ios逆向,tweak简洁使用教程
    第二章 第二十五节:文件操作:with和复制
    【多线程学习】线程池、简单的银行取款模拟
    【雷丰阳-谷粒商城 】课程概述
    STM8 调试总结
  • 原文地址:https://blog.csdn.net/jiangyangll/article/details/127601586