在linux和windows下anaconda+pycharm+tensorflow+cuda的配置

在linux和windows下anaconda+pycharm+tensorflow+cuda的配置

第一次在csdn上写博客,纯粹是为了想自己以后可以来看看之前踩得坑,也方便以后遇到同样的问题的时候能够有经验解决

Window10

首先是在Linux下,刚开始之所以会遇到这个问题是在跑Github上的一个代码,是需要用到tensorflow框架,之后配好环境后代码是能够跑通的,但是计算速度非常慢,使用nvidia-smi查看之后发现并没有用到GPU,应该还是在用cpu在跑,但是代码里也都对GPU进行了调用,所以就很奇怪,寻思之前就对cuda什么的这些不了解,就趁着这次机会可以好好解决一下这个问题。

1.Anaconda+pycharm

2. cuda和cudnn的安装

3. 与tensorflow的关系

4. tensorflow与tensorflow-gpu

1、Anaconda+pycharm

Anaconda 是一个基于 Python 的数据处理和科学计算平台,它已经内置了许多非常有用的第三方库,装上Anaconda,就相当于把 Python 和一些如 Numpy、Pandas、Scrip、Matplotlib 等常用的库自动安装好了,使得安装比常规 Python 安装要容易。如果选择安装Python的话,那么还需要 pip install 一个一个安装各种库,安装起来比较痛苦,还需要考虑兼容性,非如此的话,就要去Python官网(https://www.python.org/downloads/windows/)选择对应的版本下载安装,可以选择默认安装或者自定义安装,为了避免配置环境和安装pip的麻烦,建议勾选添加环境变量和安装pip选项

此外,anaconda安装成功后可以很方便的创建虚拟环境,对于不同的projects是会需要不同版本的python解释器,这时候利用anaconda就可以很方便的对于不同的环境进行管理。

anaconda和pycharm的安装和配置可详见这篇博客:https://zhuanlan.zhihu.com/p/36389880

对于我而言,因为在之前安装的过程中并没有勾选环境变量,所

以需要在安装完anaconda后添加环境变量,也就是首先找到anaconda的安装路径,然后找到一个scripts文件,点击后将路径复制



然后,右键“我的电脑”>选择“属性”>高级系统设置>环境变量



这时候直接在cmd里输入python就会是anaconda里base的python版本,conda也不是内部命令。



这时候就大功告成了,可以使用conda来创建虚拟环境,对各个projects的管理也方便和很多。常用的conda的命令



2、cuda和cudnn的安装

用GPU计算肯定离不开显卡,显卡的好坏决定了你的运算速度。首先查看你的显卡,gpu算力需要5.0以上的显卡才能进行GPU的计算,可参考下面的博客:https://blog.csdn.net/huixingshao/article/details/82215703 然后就是安装CUDA和cuDNN。

可查看自己电脑的显卡支持的最高版本的cuda,从控制面板里搜nvidia控制面板,在系统信息里可以看到显卡驱动和支持的cuda版本,显卡驱动个cuda版本的对应关系:https://blog.csdn.net/zl535320706/article/details/83474849





之后cuda和cudnn的安装和配置可按照这篇博客进行。

https://blog.csdn.net/Coppa/article/details/90573236

注:cuda安装完成后如果测试代码可能会有问题,重启一下电脑可能会解决。

验证是否安装成功可以直接在cmd里用nvcc --version查看cuda的版本。

3、与tensorflow的关系

众所周知,tensorflow是一个深度学习的框架,我们在跑github上的代码的时候经常会在readme文件里告知此项目需要的tensorflow版本,所以这也是需要创建虚拟环境的好处,可以很容易对不同的项目使用不同的环境,但是一旦用到tensorflow-gpu版本的话就需要使用cuda来进行加速,但是我们在之前已经安装好了cuda的版本,不同的cuda版本是有对应的tensorflow-gpu版本的,具体可参考:https://blog.csdn.net/qq_27825451/article/details/89082978

这里需要注意的是,如果是使用pip install tensorflow-gpu 这时候的tensorflow-gpu是和在电脑里装的cuda和cudnn对应的,所以安装的版本要注意,这时候就会产生一个问题,我们不同的项目是需要使用不同的tensorflow版本的,那我们每次还需要再重新安装cuda吗?其实是不用的,使用pip进行安装时是只会安装install之后的包,但是如果使用的是conda install进行安装,则还会安装除了这个包外其他可能会用到的依赖项,所以如果conda install tensorflow-gpu时就会看到



是默认已经安装了cuda和cudnn的,而且版本是已经适配好的,所以在使用conda进行安装的时候其实是并没有看外部电脑系统里带的cuda版本,所以,这样就可以使用虚拟环境随意使用不同的cuda和tensorflow版本。但是也有一个问题,比如我的系统cuda是9.0,我在使用pip install tensorflow-gpu1.6的时候是可以安装并且跑成功的,但是当我使用conda install tensorflow-gpu1.6的时候就无法进行安装,当调整为1.10版本的时候就可以了,这是目前无法理解的问题,可能是系统自带的cuda还是会影响tensorflow的版本,亦或者是python的版本问题,之后还需要进行解决。

4、tensorflow与tensorflow-gpu

有一个例子说的很好

GPU的工作大部分就是这样,计算量大,而且要重复很多很多次。就像你有个工作需要算几亿次一百以内加减乘除一样,最好的办法就是雇上几十个小学生一起算,一人算一部分

CPU就像老教授,积分微分都会算,就是工资高,一个老教授资顶二十个小学生,你要是富士康你雇哪个

CPU和GPU因为最初用来处理的任务就不同,所以设计上有不小的区别,而某些任务和GPU最初用来解决的问题比较相似,所以用GPU来算了

GPU的运算速度取决于雇了多少小学生,CPU的运算速度取决于请了多么厉害的教授。教授处理复杂任务的能力是碾压小学生的,但是对于没那么复杂的任务,还是顶不住人多。

当然现在的GPU也能做一些稍微复杂的工作了,相当于升级成初中生高中生的水平。但还需要CPU来把数据喂到嘴边才能开始干活,究竟还是靠CPU来管的。

gpu版安装麻烦,需要涉及到cuda(显卡驱动)和cdnn 以及tensorflow-gpu的配置很麻烦,即使安装成功后,调用一大堆问题,只有解决了这些问题才是真的安装好了,并不是有了这个东西就算安装好了。

网上说的tensorflow-gpu的安装会覆盖tensorflow(cpu版),即使tensorflow存在,也是被覆盖了。

我在自己尝试的时候使用conda安装gpu会把cpu版本的也装上,但是在使用的时候是可以直接指定gpu进行使用的。

Linux

linux下基本和windows是一致的。需要注意的点如下。

1、环境变量

linux下的环境变量可以直接编辑./bashrc文件。

命令:ls -a 找到文件 .bashrc;

gedit~./bashrc 打开文件后直接在文件的最末尾加上要添加的环境变量,export PATH=路径:$PATH,之后还需要source回到跟目录即可



2、想到再写吧

【深度学习】在linux和windows下anaconda+pycharm+tensorflow+cuda的配置的更多相关文章

  1. windows 下 Anaconda 安装 TensorFlow

    转自: https://www.cnblogs.com/nosqlcoco/p/6923861.html 什么是 Anaconda? Anaconda is the leading open data ...

  2. windows下Anaconda的安装与配置正解

    一.下载anaconda 第一步当然是下载anaconda了,官方网站的下载需要用迅雷才能快点,或者直接到清华大学镜像站下载. 清华大学提供了镜像,从这个镜像下载速度很快,地址: https://mi ...

  3. windows下的pycharm配置 linux环境

    由于最近学习python的需要,为了方便程序的调试,尝试在Windows下的Pycharm远程连接到虚拟机中Centos下的python环境.(这里我采用的是ssh的远程连接)1.准备工作: 固定ce ...

  4. 转 windows下安装pycharm并连接Linux的python环境 以及 windows 下notepad ++编辑 linux 的文件

    ######sample 1:windows下安装pycharm并连接Linux的python环境 https://www.cnblogs.com/junxun/p/8287998.html wind ...

  5. [笔记]linux下和windows下的 创建线程函数

    linux下和windows下的 创建线程函数 #ifdef __GNUC__ //Linux #include <pthread.h> #define CreateThreadEx(ti ...

  6. 【转】linux和windows下安装python集成开发环境及其python包

    本系列分为两篇: 1.[转]windows和linux中搭建python集成开发环境IDE 2.[转]linux和windows下安装python集成开发环境及其python包 3.windows和l ...

  7. protobuff 配合 libevent 在Linux 和windows 下的使用

    protobuff 配合 libevent 在Linux 和windows 下的使用待补全. libprotobuf.lib libproto-lite.lib libprotoc.lib

  8. tar.xz如何解压:linux和windows下tar.xz解压命令介绍

    在linux下怎么解压和压缩tar.xz文件? (本文由www.169it.com搜集整理) 在linux下解压tar.xz文件步骤 1 2 # xz -d ***.tar.xz  //先解压xz # ...

  9. Linux和Windows下查看环境变量方法对比

    摘自:Linux和Windows下查看环境变量方法对比 一.查看所有环境变量的名称和值 Linux下:export Windows下:set 二.根据名称查该环境变量的值 Linux下:echo $环 ...

随机推荐

  1. 视觉SLAM的主要功能模块分析

    视觉SLAM的主要功能模块分析 一.基本概念 SLAM (simultaneous localization and mapping),也称为CML (Concurrent Mapping and L ...

  2. eclipse左边的工程列表窗口不见了解决方案

    解决eclipse左边的工程列表窗口看不到工程目录的方法: Window->Show View->Project Explorer(如果没有Project Explorer选项,则Wind ...

  3. Java swing JFrame用repaint出现闪烁的问题解决

    这几天用swing写登录页面背景动图的时候发现一直会有闪烁(我的类是继承JFrame),就来搜原因后发现好像是因为repaint会调用update()方法中的清屏操作导致闪烁. 我当时看的是这个文章 ...

  4. 【转】【NX二次开发】UFUN进度中断,单击停止可中断此操作

    队长的博客: https://www.cnblogs.com/nxopen2018/p/13174207.html 显示此对话框,点击可中断操作: 用到的ufun函数: UF_ABORT_ask_fl ...

  5. Redis与DB的数据一致性解决方案(史上最全)

    文章很长,而且持续更新,建议收藏起来,慢慢读! 高并发 发烧友社群:疯狂创客圈(总入口) 奉上以下珍贵的学习资源: 疯狂创客圈 经典图书 : 极致经典 + 社群大片好评 < Java 高并发 三 ...

  6. Integer 如何实现节约内存和提升性能的?

    在Java5中,为Integer的操作引入了一个新的特性,用来节省内存和提高性能.整型对象在内部实现中通过使用相同的对象引用实现了缓存和重用. 上面的规则默认适用于整数区间 -128 到 +127(这 ...

  7. 「10.16晚」序列(....)·购物(性质)·计数题(DP)

    A. 序列 考场不认真读题会死..... 读清题就很简单了,分成若干块,然后块内递增,块外递减,同时使最大的块长为$A$ B. 购物 考场思路太局限了,没有发现性质, 考虑将$a_{i}$,排序前缀和 ...

  8. ZooKeeper分布式锁的实现

    ZooKeeper分布式锁的实现. 在分布式的情况下,sychornized 和 Lock 已经不能满足我们的要求了,那么就需要使用第三方的锁了,这里我们就使用 ZooKeeper 来实现一个分布式锁 ...

  9. BGP路由技术

    BGP路由技术 目录 一.BGP概述 1.1.自治系统 1.2.动态路由分类 1.3.BGP概念 1.4.BGP的特征 1.5.BGP工作原理 二.命令配置 2.1.BGP配置思路 2.2.命令 一. ...

  10. js笔记15

    DOM2动态创建节点 1.生成节点的方法 document.createElement("div") 2.插入节点的方法 父元素.appendChild(新节点) 在父节点的子节点 ...