zoukankan      html  css  js  c++  java
  • Win7 +Cuda9.0+cudnn7.0.5 tensorflow-gpu1.5.0 安装实战

    https://blog.csdn.net/gangeqian2/article/details/79358543

    https://blog.csdn.net/tomato_sir/article/details/79973237

    https://blog.csdn.net/qq_36556893/article/details/79433298  -->这里面有个链接,支持cuda9.1的tensorflow

    装GPU版本的tensorflow,搞了1天多,终于搞清来龙去脉。记录于此希望让你少走弯路。  

    我的第一块显卡是 NVIDIA Quadro 2000

     支持cuda5.0.1 ,驱动太低,tensorflow gpu版本需要至少cuda8.0。 你用驱动精灵升级你的显卡驱动。

    后来发现,不需要用驱动精灵先升级显卡驱动的。你就直接装cuda,全部安装,别少选,他里面有驱动,会帮你升级。但问题是,老显卡你不知道最高支持多少,比如显卡最高支持cuda8.0,你装个cuda9.0,那不行的。

    所以,如果你是第一次装,你还是老老实实先用驱动精灵升级显卡驱动,这样你就知道显卡最高支持多少的cuda了。

    我之前不知道上面的规律,所以我看到5.0.1后,以为这显卡不能用,换了一个更高级的显卡,用驱动精灵装完驱动后发现显卡是cuda9.2,后来发现后续装cudnn 支持不了9.2(why?你看这篇文章的第5点,列表中cuda9.2没有支持win7的包),后来重新装cuda9.0 后,这里的驱动也降到了9.0.  

    上面的经验也折腾了好久。。

    下图是我第一块显卡,后来被证实这块显卡装好最新驱动后支持cuda8.0. 下面的记录都是我用第二块显卡的过程。这个图的主要目的是让你知道哪里去找显卡的cuda版本。你运行里面直接搜索'nvidia控制面板就行'

                                                                                      图一

    1.为了要cpu和gpu都支持,需要新建一个新的虚拟环境

    (后来我把虚拟环境删除了,不要cpu版本的了,直接gpu版本,下面2.3 两步可以省略)

    conda create --name tensorflow-gpu python=3.6  
    

     红色字为新环境名字,随意~

    2.切换到新的环境 

    activate tensorflow-gpu 

    3.查看当前环境, 可以看到已经切换了。  * 好就是当前的环境

    conda info --envs

     

     

    4.安装cuda

    先装 VS2013 (VS2015 VS2017 都可以行,vs2012是否可以,请网友试验成功后告诉我哈,我装cuda时,里面显示可以装vs2012的扩展,所以我认为都是可以的)

    装完vs,装cuda

    CUDA下载地址:https://developer.nvidia.com/cuda-downloads 

    我的cuda在这里:https://developer.nvidia.com/cuda-90-download-archive?target_os=Windows&target_arch=x86_64&target_version=7&target_type=exelocal

    5.  装cudnn 

    务必到下面网站看下,支持的cuda版本,和操作系统的版本。我是win7,cuda9.0 用的是红框的。

    https://developer.nvidia.com/rdp/cudnn-archive   (这网站要注册,而且网站比较慢,需要FQ,好麻烦的~~)

     

    按照其他帖子,把cudnn直接复制到相应目录。

    打开你下载路径可以看到cuda文件夹下有三个子文件,分别为bin、include和lib

    将以下三个路径添加到环境变量中(不知道环境变量在哪的朋友自行百度~)

    C:Program FilesNVIDIA GPU Computing ToolkitCUDAv9.0in;

    C:Program FilesNVIDIA GPU Computing ToolkitCUDAv9.0include;

    C:Program FilesNVIDIA GPU Computing ToolkitCUDAv9.0libx64;

    (温馨提示:记得路径之间加分号  ;)

    6. 安装 tensorflow-gpu 1.5.0 

    如果第一次使用anaconda,pip可能比较老了,可以升级一下pip先:

    python -m pip install --upgrade pip

    安装之前记得先把cpu版本的tensorflow卸载,还有tensorboard也卸载。

    pip uninstall tensorflow

    pip uninstall tensorboard (这步大概不需要,你自己看看吧)

    pip install tensorflow-gpu==1.5.0       指定一个版本,  老版本不支持 cuda9.0  只支持cuda8.0,新的版本据说有bug,反正用1.5.0据说不出问题。

    备用,如果你pip安装出错或者网络慢,可以先下载whl文件:

    tensorflow 的 whl文件下载

    https://pypi.org/project/tensorflow-gpu/1.5.0/#files

    7.测试下 

    我做测试时,所有都装好后运行下面两句,import没问题,但是tf.__version__显示没有这个模块。

    经过反复重装也没用,最后,我把anaconda更新了一下。就好了【轻描淡写的一句话,实际上我折腾了大半天。。。。最后不行了才想到去更新anaconda】

    import tensorflow as tf
    tf.__version__
    

    测试是否能用gpu,应该返回true 

    tf.test.is_gpu_available( cuda_only=False, min_cuda_compute_capability=None )
    

       

    8. 更新anaconda 

    以下两个方法都OK。大概需要半小时左右(看网速多快了)。我用第一个方法的。

     方法1:

    方法2:

    conda install  -c anaconda html5lib  
    

      

    用了方法一后,我对比了一下,发现里面的包并没有更新:

    上面2种方法还是有点区别的,第二种方法会更新所有的库,第一种方法并没有更新别的库,只是更新了conda

    类似于下面,这句话的意思是更新conda,这个指令的作用是更新conda 的package库

    第一种方法类似于:conda update conda
    
    第2种方法类似于:conda update --all
    

      

      

    conda的文档

    https://conda.io/docs/user-guide/getting-started.html  

    9. 经过上面第8步更新后,再回到第六步,安装tensorflow-gpu 就可以安装成功了。

    一段demo

    #写在第一段单元格
    import tensorflow as tf
    
    hello = tf.constant('Hello, TensorFlow!')
    sess = tf.Session()
    print(sess.run(hello))
    
    a = tf.constant(10)
    b = tf.constant(32)
    print(sess.run(a + b))
    
    
    
    #写在第二个cell
    import tensorflow as tf
    import numpy
    import matplotlib.pyplot as plt
    rng = numpy.random
    
    learning_rate = 0.01
    training_epochs = 1000
    display_step = 50
    #数据集x
    train_X = numpy.asarray([3.3,4.4,5.5,7.997,5.654,.71,6.93,4.168,9.779,6.182,7.59,2.167,
                             7.042,10.791,5.313,9.27,3.1])
    #数据集y
    train_Y = numpy.asarray([1.7,2.76,3.366,2.596,2.53,1.221,1.694,1.573,3.465,1.65,2.09,
                             2.827,3.19,2.904,2.42,2.94,1.3])
    n_samples = train_X.shape[0]
    X = tf.placeholder("float")
    Y = tf.placeholder("float")
    
    W = tf.Variable(rng.randn(), name="weight")
    b = tf.Variable(rng.randn(), name="bias")
    
    pred = tf.add(tf.multiply(X, W), b)
    
    cost = tf.reduce_sum(tf.pow(pred-Y, 2))/(2*n_samples)
    
    optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(cost)
    
    init = tf.initialize_all_variables()
    with tf.Session() as sess:
        sess.run(init)
    
        # 训练数据
        for epoch in range(training_epochs):
            for (x, y) in zip(train_X, train_Y):
                sess.run(optimizer, feed_dict={X: x, Y: y})
    
        print("优化完成!")
        training_cost = sess.run(cost, feed_dict={X: train_X, Y: train_Y})
        print("Training cost=", training_cost, "W=", sess.run(W), "b=", sess.run(b), '
    ')
    
        #可视化显示
        plt.plot(train_X, train_Y, 'ro', label='Original data')
        plt.plot(train_X, sess.run(W) * train_X + sess.run(b), label='Fitted line')
        plt.legend()
        plt.show()

     运行后显示:

     10  虽然能运行上面的,但是发现导入tensorflow时会报错

    是因为numpy版本和h5py的不兼容,升级 pip install --upgrade h5py==2.8.0rc1

    参考:

    https://blog.csdn.net/u014561933/article/details/80156091

  • 相关阅读:
    组原——④存储器4
    sdk和api的区别
    转载:直播测试
    生成短链接
    H5调原生
    Android Intent 启动方法和启动Action大全
    ps和top的区别
    安卓知识点
    正则基础之——捕获组(capture group)
    正则基础之——反向引用
  • 原文地址:https://www.cnblogs.com/lhuser/p/9178475.html
Copyright © 2011-2022 走看看