Python——tensorflow-gpu的安裝與一些問題

記錄安裝tensorflow-gpu版本時遇到的一些問題

     我現在用的時Pycharm,裏面的Interpreter使用的是Anaconda的python.exe。我的想法是,把所有的package全都放在一個Interpreter裏,這樣的話,以後我不管運行什麼文件都可以只是用這個Interpreter,從而不需要安裝重複的package。
  但事實上,我請教了一些大佬,他們說tensorflow一般都單獨創建一個虛擬環境,因爲像tensorflow, pytorch之類誰知道混在一起就會崩了。而我看了網上的一些教程也都是讓你先創建一個名爲tensorflow的環境,然後安裝進去之類…
再然後就是,我使用Pycharm的時候會遇到一些問題,有時候我會繞過去,但早晚還會再遇見這些坑,於是這次我又跳了進去…但最後還是跳了出來。

一、首先是Anaconda的安裝

正常默認安裝, 記得勾選添加環境變量。
打開Anaconda Prompt,輸入

conda info --e

顯示結果如下,它要我們激活這個base:
在這裏插入圖片描述
此時,我們執行

conda activate base

我們就進入了base
在這裏插入圖片描述
接着在這裏輸入

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple tensorflow-gpu==2.0.0a0

OK,tensorflow-gpu版本就已經安裝完成了!

二、然後我們安裝Cuda

https://developer.nvidia.com/cuda-10.0-download-archive?target_os=Windows&target_arch=x86_64&target_version=10&target_type=exelocal
選擇version10安裝,然後全都默認安裝到結束。
然後就是cudnn的安裝
https://developer.nvidia.com/rdp/cudnn-download
下載之後解壓縮,然後將文件夾的內容放到Cuda的安裝目錄下(需要自己建立一個名爲cudnn的文件夾)
在這裏插入圖片描述
最後就是環境變量的配置了。在安裝的時候機會有前兩個環境自動配置好,而我們需要手動配置後兩個:
在這裏插入圖片描述
至此,Cuda算是安裝完成了。

正常默認安裝, 記得勾選添加環境變量。

三、記錄一下安裝tensorflow-gpu遇到的一些問題

裝完之後,運行以下測試代碼(來自網絡)

import tensorflow as tf
import timeit

with tf.device('/cpu:0'):
    cpu_a = tf.random.normal([10000, 1000])
    cpu_b = tf.random.normal([1000, 2000])
    print(cpu_a.device, cpu_b.device)

with tf.device('/gpu:0'):
    gpu_a = tf.random.normal([10000, 1000])
    gpu_b = tf.random.normal([1000, 2000])
    print(gpu_a.device, gpu_b.device)


def cpu_run():
    with tf.device('/cpu:0'):
        c = tf.matmul(cpu_a, cpu_b)
    return c


def gpu_run():
    with tf.device('/gpu:0'):
        c = tf.matmul(gpu_a, gpu_b)
    return c


# warm up
cpu_time = timeit.timeit(cpu_run, number=10)
gpu_time = timeit.timeit(gpu_run, number=10)
print('warmup:', cpu_time, gpu_time)

cpu_time = timeit.timeit(cpu_run, number=10)
gpu_time = timeit.timeit(gpu_run, number=10)
print('run time:', cpu_time, gpu_time)

此時結果是正常出來了,但是報出如下:
在這裏插入圖片描述
意思是你的 CPU 支持AVX AVX2 (可以加速CPU計算),但你安裝的 TensorFlow 版本不支持。但我用的是GPU的Cuda加速,想想就不需要CPU了。雖然這些不是警告也不是錯誤,但看起來還是不舒服。
查找了忽略這些信息的一些方法:

os.environ["TF_CPP_MIN_LOG_LEVEL"] = '1' # 默認,顯示所有信息 
os.environ["TF_CPP_MIN_LOG_LEVEL"] = '2' # 只顯示 warning 和 Error 
os.environ["TF_CPP_MIN_LOG_LEVEL"] = '3' # 只顯示 Error

因此,對於現在的情況,我們選擇‘2’

import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'

結果如下:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章