1.安装CornerNet、Anaconda和pytorch遇到的问题

2.安装tensorflow-gpu版本

3.pytorch版本安装

4.tensorflow和pytorch指定多GPU进行运算

5.pytorch和tensorflow中的tensor与numpy转换

6.pytorch数据的并行计算(DataParallelism)

7.Pytorch查看可训练参数

8.Pytorch冻结梯度,只训练某几层网络权重

9.安装anaconda后取消命令行前出现的base

1. 安装CornerNet、Anaconda和pytorch遇到的问题

Anaconda在2019年5月已经禁止使用国内镜像了,因此下面方法已经用不了了,权当做留念,以后只能使用官方提供的来安装,速度慢点就慢点吧。

用conda安装Pytorch过程中会连接失败,这是因为Anaconda.org的服务器在国外。可以用清华TUNA镜像源,包含Anaconda仓库的镜像,将其加入conda的配置,配置如下:

  1. 添加清华镜像
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
切换回默认镜像源,命令一行搞定:
conda config --remove-key channels

如果想单个删除的话,删除单个链接命令如下:

conda config --remove channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
  1. 然后CornerNet官网会有如下一条命令来创建CornerNet_Lite环境并安装conda_packagelist.txt文档中的各种包:
conda create --name CornerNet_Lite --file conda_packagelist.txt --channel pytorch

但是会出现中断,提示安装失败,因此这里我们应该去掉后面指定channel路径的–channel pytorch,即改为:

conda create --name CornerNet_Lite --file conda_packagelist.txt

3.对于安装的pytorch版本问题,在conda_packagelist.txt需要把pytorch的版本以及cuda的版本根据电脑驱动版本来改过来。由于电脑cuda版本是9.0,而他的文件中却是10.0,因此需要做出以下更改:
(1) cuda100=1.0=0 改为 cuda90=1.0.0
(2) pytorch=1.0.0=py3.7_cuda10.0.130_cudnn7.4.1_1 改为pytorch=1.0.0=py3.7_cuda9.0.176_cudnn7.4.1_1
4. 如果怎么安装都出错,就卸载Anaconda后重新装Anaconda,再试一遍,应该能解决问题。卸载Anaconda参考https://blog.csdn.net/yeler082/article/details/79116490

5.遇到ValueError:numpy.ufunc size changed,may…的问题,解决方法是把numpy升级到1.16.1版本,pip install numpy==1.16.1。不过我上次遇到这种问题是由于没装好pytorch或者Anaconda。最后装好了之后就不会出现这种情况。

6.python图像处理问题
AttributeError: ‘NoneType’ object has no attribute ‘shape’
原因:

(1) 图片不存在(路径不存在, 路径包含中文无法识别)
(2) 读取的图片内容和默认读取时参数匹配不匹配。(默认读取的是3通道的彩色图)例如读取到的图片是灰度图,就会返回None。
(3)路径中有中文。

7.命令
(1) 安装完anaconda后终端默认会出来一个(base),可使用conda deactivate命令去掉,不过有没有不影响。
(2) 创建zhz环境

conda create --name zhz

也可以使用例如

conda create --name CornerNet_Lite --file conda_packagelist.txt --channel pytorch

的命令通过pytorch官网安装conda_packagelist.txt文件下的所有安装包。conda_packagelist.txt由我们自己随意决定想安装哪些包,我们可以通过指定–chanel来从清华镜像源安装更快,参考5.1, 5.2。

(3) 进入zhz环境

source activate zhz

(4) 退出zhz环境

source activate

2. 安装tensorflow-gpu版本

使用anaconda安装tensorflow的环境:python3.5.6+tensorflow-gpu==1.12.0+cuda9.0.176+cudnn7.1.4安装成功
由于tensorflow目前不支持Python3.7,因此在系统中再安装一个Python版本,以python3.5.6为例:
1.安装好Python3.5.6: 参考:https://www.cnblogs.com/ningvsban/p/4384995.html
2.在anaconda下创建名为“tensorflow”并且Python环境为3.5版本的环境:

conda create --name tensorflow python=3.5   #

3.安装tensorflow
系统默认安装tensorflow版本:

pip install tensorflow-gpu

安装指定版本的tensorflow:

pip install tensorflow-gpu==1.12.0

如果你下载了某个版本的tensorflow-gpu到本地,可以这么安装:

pip install tensorflow_gpu-0.12.0-cp35-cp35m-manylinux1_x86_64.whl

测试tensorflow是否安装成功:
进入Python

import tensorflow as tf
tf.__version__

3.pytorch安装

建议0.4.0版本最合适,不要安装最新版。
我电脑和服务器版本都是cuda=9.0.176 + cudnn=7.1.4 + 1050Ti(我)+1080Ti(服务器)
版本推荐:pytorch-0.4.0 + torchvision-0.1.8 + python=3.5.4
在http://download.pytorch.org/whl/cu90/torch-0.4.0-cp35-cp35m-linux_x86_64.whl 可下载pytorch-0.4.0版本,python=3.5.4.

如果想安装别的版本,例如1.0.1版本,只需要把上面网址中的0.4.0改为1.0.1即可。
还要安装numpy之后才能import torch成功,否则只会安装torch成功,导入会失败

也可在清华源镜像中下载各pytorch安装包,不过下载下来的是压缩包(我还没有查阅怎么使用这种安装),不是whl格式的文件,: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/linux-64/

另 torchvision安装0.1.8合适。因为更高的版本有些东西被弃用了,很多程序都运行不了,改起来很麻烦。
安装方法:下载pytorch-0.4.0版本的whl文件

pip install torch-0.4.0-cp35-cp35m-linux_x86_64.whl
pip install torchvision==0.1.8

不能直接安装pip install torchvision不指定版本,否则会自动安装最高版本的torchvision,然后就自动把pytorch版本也升级了。

4.tensorflow和pytorch指定多GPU进行运算

tensorflow和pytorch指定多GPU的话,对应的语句首先改成:
CUDA_VISIBLE_DEVICES=0,1 python my_script.py
CUDA_VISIBLE_DEVICES=2,3 python my_script.py
CUDA_VISIBLE_DEVICES=0,1,2,3 python my_script.py
或者:
os.environ[“CUDA_VISIBLE_DEVICES”] = “0,1,2,3” #一定要加引号
在tensorflow中可以使用

with tf.device('/gpu:0'):

这样的方式来指定GPU进行某部分运算。

5.pytorch和tensorflow中的tensor与numpy转换

5.1 pytorch的tensor与numpy数组转换

pytorch的tensor对象与numpy数组是可以相互转换的,且numpy数组的默认类型是double.

(1)tensor转numpy:
# a是   <class ‘torch.Tensor’>
# b和c是   <class ‘numpy.ndarray’>
a = torch.ones(2,2)
b = a.numpy()    # 方法1
c=np.array(a)    # 方法2,也可以转numpy数组
(2)numpy转tensor:
# a是   <class ‘numpy.ndarray’>
# b和c是 <class ‘torch.Tensor’>
a = np.ones(5)
b = torch.from_numpy(a)     # 方法1
c=torch.Tensor(a)           # 方法2,也可以转pytorch Tensor

5.2 TensorFlow中 tensor与numpy数组转换

(1) ndarray 转化为 tensor

TensorFlow 通过 convert_to_tensor 这个函数进行转换,代码如下:

# 创建ndarray
array = np.array([1, 2, 3, 4], np.float32)
# 将ndarray转化为tensor
t = tf.convert_to_tensor(array, tf.float32, name='t')
print(t)Tensor("t:0", shape=(4,), dtype=float32)
(2) tensor转化为ndarray
方法1:直接转化
# 创建张量
t = tf.constant([1, 2, 3, 4], tf.float32)
session = tf.Session()array = session.run(t) # 张量转化为ndarrayprint(type(array))
print(array)<class 'numpy.ndarray'>
[ 1.  2.  3.  4.]
方法2: 利用Tensor的成员函数eval
t = tf.constant([1, 2, 3, 4], tf.float32)
session = tf.Session()array = t.eval(session=session) # 张量转化为ndarray
print(type(array))
print(array)<class 'numpy.ndarray'>
[ 1.  2.  3.  4.]
上面这种方法也可以这么写
t = tf.constant([1, 2, 3, 4], tf.float32)
# 张量转化为ndarray
with tf.Session() as session:array = t.eval()print(type(array))print(array)<class 'numpy.ndarray'>
[ 1.  2.  3.  4.]

6.pytorch数据的并行计算(DataParallelism)

摘自:https://blog.csdn.net/Alawaka2018/article/details/80993197

.to(device)

\left( \frac{ \frac{x_b - x_a}{w_a} - \mu_x }{\sigma_x}, \frac{ \frac{y_b - y_a}{h_a} - \mu_y }{\sigma_y}, \frac{ \log \frac{w_b}{w_a} - \mu_w }{\sigma_w}, \frac{ \log \frac{h_b}{h_a} - \mu_h }{\sigma_h}\right)

7.Pytorch查看可训练参数,添加no bias decay实现

参考:https://blog.csdn.net/jeryjeryjery/article/details/83057199
遍历named_parameters()中的所有的参数,只打印那些param.requires_grad=True的变量,就是模型中所有的可训练参数列表
model.parameters()只有数值,model.named_parameters()既有名称,也有数值,model.parameters()就是从model.named_parameters()中提取的数值

for name, param in model.named_parameters():
if param.requires_grad:print(name)

下面是对params进行修改,只对权重进行衰减,不对偏置衰减:

import torch.optim as optim### no bias decay
## 把model.named_parameters参数中的偏置和权重分别添加到各自的列表中。
## 由于model.named_parameters()中只有(卷积层和BN层的)权重和偏置,所以optim.SGD()中的model.parameters()可以用weight_p, bias_p代替。
weight_p, bias_p = [],[]
for name, p in model.named_parameters():
if 'bias' in name:bias_p += [p]
else:weight_p += [p]for name, param in model.named_parameters():
if param.requires_grad:print(name)
# Optimizer
# optimizer = optim.SGD(model.parameters(), lr=hyp['lr0'], momentum=hyp['momentum'], weight_decay=hyp['weight_decay'],
#                      nesterov=True)
optimizer = optim.SGD([{'params': weight_p, 'weight_decay': hyp['weight_decay']},{'params': bias_p, 'weight_decay': 0}],lr=hyp['lr0'],momentum=hyp['momentum'], nesterov=True)

可能在加入no bias decay的代码后,会出现下面的错误,原因是因为你需要重头开始训练,而不能在某个epoch中断训练后修改代码添加进no bias decay之后从检查点恢复训练,
你都把可训练参数修改进了weight_p, bias_p了,自然找不到之前训练的参数了。

Traceback (most recent call last):File "train.py", line 391, in <module>accumulate=opt.accumulate)File "train.py", line 153, in trainoptimizer.load_state_dict(chkpt['optimizer'])File "/usr/local/lib/python3.5/dist-packages/torch/optim/optimizer.py", line 110, in load_state_dictraise ValueError("loaded state dict has a different number of "
ValueError: loaded state dict has a different number of parameter groups

8.Pytorch冻结梯度,只训练某几层网络权重

具体实例及讲解参考 https://blog.csdn.net/u012436149/article/details/66971822
这里讲一下requires_grad和volatile:
(1)在训练时如果想要固定网络的底层,那么可以令这部分网络对应子图的参数requires_grad为False。这样,在反向过程中就不会计算这些参数对应的梯度。
(2)Variable的参数volatile=True和requires_grad=False的功能差不多,但是volatile的力量更大。当有一个输入的volatile=True时,那么输出的volatile=True。volatile=True推荐在模型的推理过程(测试)中使用,这时只需要令输入的voliate=True,保证用最小的内存来执行推理,不会保存任何中间状态。

9.安装anaconda后取消命令行前出现的base

安装conda后取消命令行前出现的base,取消每次启动自动激活conda的基础环境

参考: https://blog.csdn.net/u014734886/article/details/90718719

方法一:

每次在命令行通过conda deactivate退出base环境回到系统自动的环境

方法二

1,通过将auto_activate_base参数设置为false实现:

conda config --set auto_activate_base false

2,那要进入的话通过conda activate base

3,如果反悔了还是希望base一直留着的话通过conda config --set auto_activate_base true来恢复

【深度学习】pytorch-tensorflow-anaconda笔记相关推荐

  1. 【AI】《动手学-深度学习-PyTorch版》笔记(五):线性代数

    AI学习目录汇总 1.标量 1.1 介绍 标量就是我们常见的单个数字(包括整数.小数等等),可以使用只有一个元素的张量表示 1.2 表示方法 用小写字母表示,如:x.y.z 1.3 程序示例 impo ...

  2. 纽约大学深度学习PyTorch课程笔记(自用)Week2

    纽约大学深度学习PyTorch课程笔记Week2 2. Week2 2.1 梯度下降和反向传播算法导论 2.1.1 梯度下降优化算法 参数化模型 梯度下降 2.1.2 在传统神经网络中随机梯度下降和反 ...

  3. 深度学习调用TensorFlow、PyTorch等框架

    深度学习调用TensorFlow.PyTorch等框架 一.开发目标目标 提供统一接口的库,它可以从C++和Python中的多个框架中运行深度学习模型.欧米诺使研究人员能够在自己选择的框架内轻松建立模 ...

  4. 2_初学者快速掌握主流深度学习框架Tensorflow、Keras、Pytorch学习代码(20181211)

    初学者快速掌握主流深度学习框架Tensorflow.Keras.Pytorch学习代码 一.TensorFlow 1.资源地址: 2.资源介绍: 3.配置环境: 4.资源目录: 二.Keras 1.资 ...

  5. DL框架:主流深度学习框架(TensorFlow/Pytorch/Caffe/Keras/CNTK/MXNet/Theano/PaddlePaddle)简介、多个方向比较、案例应用之详细攻略

    DL框架:主流深度学习框架(TensorFlow/Pytorch/Caffe/Keras/CNTK/MXNet/Theano/PaddlePaddle)简介.多个方向比较.案例应用之详细攻略 目录 深 ...

  6. torch的拼接函数_从零开始深度学习Pytorch笔记(13)—— torch.optim

    前文传送门: 从零开始深度学习Pytorch笔记(1)--安装Pytorch 从零开始深度学习Pytorch笔记(2)--张量的创建(上) 从零开始深度学习Pytorch笔记(3)--张量的创建(下) ...

  7. 深度学习入门笔记系列(一)——深度学习框架 tensorflow 的介绍与安装

    本系列将分为 8 篇 .今天是第一篇 ,工欲善其事必先利其器 ,先简单讲讲当前的主流深度学习框架 TensorFlow 及其安装方法 . 我们知道 ,深度学习研究的热潮持续高涨 ,许多的开源深度学习框 ...

  8. 伯禹公益AI《动手学深度学习PyTorch版》Task 07 学习笔记

    伯禹公益AI<动手学深度学习PyTorch版>Task 07 学习笔记 Task 07:优化算法进阶:word2vec:词嵌入进阶 微信昵称:WarmIce 优化算法进阶 emmmm,讲实 ...

  9. 伯禹公益AI《动手学深度学习PyTorch版》Task 03 学习笔记

    伯禹公益AI<动手学深度学习PyTorch版>Task 03 学习笔记 Task 03:过拟合.欠拟合及其解决方案:梯度消失.梯度爆炸:循环神经网络进阶 微信昵称:WarmIce 过拟合. ...

  10. 伯禹公益AI《动手学深度学习PyTorch版》Task 05 学习笔记

    伯禹公益AI<动手学深度学习PyTorch版>Task 05 学习笔记 Task 05:卷积神经网络基础:LeNet:卷积神经网络进阶 微信昵称:WarmIce 昨天打了一天的<大革 ...

最新文章

  1. 支持向量机SVM 参数选择
  2. 表单的几个基本常用功能
  3. com.google.gson.Gson 使用详解
  4. Word2Vec ——gensim实战教程
  5. java bean的反射类_JAVA中反射机制五(JavaBean的内省与BeanUtils库)
  6. Python集合和函数
  7. Spring5(3)---Spring5概述
  8. timequest静态时序分析学习笔记之工具使用
  9. Web后端学习笔记 Flask(10)CSRF攻击原理
  10. 64位系统使用Access数据库文件的彻底解决方法
  11. 21天jmeter打卡 day1
  12. 引用 一个较优雅的GridView隐藏列取值解决方案
  13. Linux 执行 Shell脚本报错,“syntax error: unexpected end of file” 原因及处理
  14. 各个刷流量软件总结对比
  15. 如何在两年内做出一个Apache顶级开源数据库——乔嘉林
  16. arduino蓝牙模块1
  17. OpenCV找圆系列(1)SimpleBlobDetector源码,凸度和圆度等检测原理
  18. 下一代宽带策略控制系统走向何方?
  19. 云班课计算机基础知识答案,云班课上的作业
  20. 《 ERP高级计划》书的解读-APS算法分析之七分解技术(DT)(蔡颖)(转)

热门文章

  1. Spring Cloud Stream 体系及原理介绍
  2. 数据仓库的架构与设计
  3. 轻量级微服务架构实践之路
  4. Sending e-mail with Spring MVC--转载
  5. jquery学习手记(8)遍历
  6. The Illustrated Transformer 翻译
  7. 亚马逊与微软赢得一亿美元云计算合约,IBM黯然神伤
  8. 实战SSM_O2O商铺_47【Redis缓存】清除缓存接口的开发
  9. Spring MVC-07循序渐进之验证器 下 (JSR 303验证)
  10. Java学习笔记(五)--流程控制