使用conda安裝Tensorflow2.0過程,以及出現的問題

https://www.jianshu.com/p/12127f2a4488?utm_campaign=haruki

一.我遇到的報錯
安裝出現報錯–ERROR: Cannot unpack file C:\Users\ochen\AppData\Local\Temp\pip-unpack-n4x31f5q\simple (downloaded from C:\Users\ochen\AppData\Local\Temp\pip-req-build-1hgqz1jd, content-type: text/html; charset=utf-8); cannot detect archive format
ERROR: Cannot determine archive format of C:\Users\ochen\AppData\Local\Temp\pip-req-build-1hgqz1jd
是需要在環境安裝Tensorflow時使用命令:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn tensorflow==2.0.0

image
本篇文章就帶領大家用最簡單地方式安裝TF2.0正式版本(CPU與GPU),由我來踩坑,方便大家體驗正式版本的TF2.0。

二.安裝教程。
1 環境準備

我目前是在Windows10上面,使用conda管理的python環境,通過conda安裝cuda與cudnn(GPU支持),通過pip安裝的tensorflow2.0。經過嘗試只是最簡單地安裝方式,無需配置複雜環境。

(關於ubuntu與mac版本的安裝可以仿照此方法,因爲conda支持多平臺,應該沒什麼問題,如果大家問題多的話,可以評論,我後面會會更新ubuntu安裝教程)

1.0 conda環境準備

conda是很好用python管理工具,可以方便建立管理多個python環境。後面安裝的步驟裏我也會介紹一些常用的conda指令。

conda 我推薦使用安裝miniconda,大家可以理解爲精簡版的anaconda,只保留了一些必備的組件,所以安裝會比快上很多,同時也能滿足我們管理python環境的需求。(anaconda一般在固態硬盤安裝需要佔用幾個G內存,花費1-2個小時,miniconda一般幾百M,10分鐘就可以安裝完成了)

miniconda推薦使用清華源下載:https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/

選擇適合自己的版本就可以,

windows推薦地址:https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-4.7.10-Windows-x86_64.exe
ubuntu推薦地址:https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-4.7.10-Linux-x86_64.sh
Mac os推薦地址:https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-4.7.10-MacOSX-x86_64.pkg
下以windows版本來安裝miniconda作爲演示,從上述下載合適版本,下載好後以管理員權限打開點擊安裝。

image
注意這兩個都要勾選,一個是讓我們可以直接在cmd使用conda指令,第二個是把miniconda自帶的python3.7作爲系統python。

安裝好後就可以在cmd中使用conda指令了,cmd打開方式,windows鍵+R鍵,彈出輸入框,輸入cmd就進入了。也可以直接在windows搜索cmd點擊運行。

下面介紹些cmd conda指令:

查看conda環境:conda env list
新建conda環境(env_name就是創建的環境名,可以自定義):conda create -n env_name
激活conda環境(ubuntu與Macos 將conda 替換爲source):conda activate env_name
退出conda環境:conda deactivate
安裝和卸載python包:conda install numpy # conda uninstall numpy
查看已安裝python列表:conda list -n env_name
知道這些指令就可以開始使用conda新建一個環境安裝TF2.0了。

1.1 TF2.0 CPU版本安裝

TF CPU安裝比較簡單,因爲不需要配置GPU,所以windows ubuntu macOS安裝方式都類似,缺點就是運行速度慢,但是用於日常學習使用還是可以的。

下面以windows版本做演示:一下均在命令行操作

1.1.0 新建TF2.0 CPU環境(使用conda 新建環境指令 python==3.6表示在新建環境時同時python3.6)

conda create -n TF_2C python=3.6

當彈出 :Proceed ([y]/n)? 輸入y回車

完成後就可以進入此環境

1.1.1 進入TF_2C環境

cond aactivate TF_2C

進入後我們就可以發現:(TF_2C)在之前路徑前面,表示進入了這個環境。使用conda deactivate可以退出。

image
我們再次進入 conda activate TF_2C ,便於執行下述命令

1.1.2 安裝TF2.0 CPU版本(後面的 -i 表示從國內清華源下載,速度比默認源快很多)

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn tensorflow2.0.0
(pip install tensorflow
2.0.0-i https://pypi.tuna.tsinghua.edu.cn/simple會報錯,不是網不好的原因,而是要把清華源加入白名單,百度很容易找到答案。解決辦法。使用如下命令:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn tensorflow==2.0.0)

如果網不好的,多執行幾次。然後過一會就安裝好啦。下面我們做下簡單測試。

1.1.3 測試TF2.0 CPU版本(把下面代碼保存到demo.py使用TF_2C python運行)

import tensorflow as tf
version = tf.version
gpu_ok = tf.test.is_gpu_available()
print(“tf version:”,version,“nuse GPU”,gpu_ok)
如果沒有問題的話輸出結果如下:可以看到tf 版本爲2.0.0 因爲是cpu版本,所以gpu 爲False

tfversion: 2.0.0 useGPUFalse

1.2 TF2.0 GPU版本安裝

GPU版本和CPU類似,但是會多一步對於GPU支持的安裝。下面來一步步實現。安裝之前確認你的電腦擁有Nvidia的GPU

1.2.0 新建TF2.0 GPU環境(使用conda 新建環境指令 python==3.6表示在新建環境時同時python3.6)

conda create -n TF_2G python=3.6

當彈出 :Proceed ([y]/n)? 輸入y回車

完成後就可以進入此環境

1.1.1 進入TF_2G環境

conda activate TF_2G

1.1.2 安裝GPU版本支持,擁有Nvidia的GPU的windows一般都有默認驅動的,只需要安裝cudatoolkit 與 cudnn包就可以了,要注意一點需要安裝cudatoolkit 10.0 版本,注意一點,如果系統的cudatoolkit小於10.0需要更新一下至10.0

conda install cudatoolkit=10.0cudnn

1.1.3 安裝TF2.0 GPU版本(後面的 -i 表示從國內清華源下載,速度比默認源快很多)

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

如果網不好的,多執行幾次。然後過一會就安裝好啦。下面我們做下簡單測試。

1.1.3 測試TF2.0 GPU版本(把下面代碼保存到demo.py使用TF_2G python運行)

import tensorflow as tf
version = tf.version
gpu_ok = tf.test.is_gpu_availableI()
print(“tf version:”,version,“nuse GPU”,gpu_ok)
如果沒有問題的話輸出結果如下:可以看到tf 版本爲2.0.0 因爲是gpu版本,所以gpu 爲True,這表示GPU版本安裝完成了。

tfversion: 2.0.0 useGPUTrue

1.2 最後我們測試一個使用TF2.0版本方式寫的線性擬合代碼

把下述代碼保存爲main.py

import tensorflow as tf

X = tf.constant([[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]])
y = tf.constant([[10.0], [20.0]])

class Linear(tf.keras.Model):
def init(self):
super().init()
self.dense = tf.keras.layers.Dense(
units=1,
activation=None,
kernel_initializer=tf.zeros_initializer(),
bias_initializer=tf.zeros_initializer()
)

def call(self, input):
    output = self.dense(input)
    return output

以下代碼結構與前節類似

model = Linear()
optimizer = tf.keras.optimizers.SGD(learning_rate=0.01)
for i in range(100):
with tf.GradientTape() as tape:
y_pred = model(X) # 調用模型 y_pred = model(X) 而不是顯式寫出 y_pred = a * X + b
loss = tf.reduce_mean(tf.square(y_pred - y))

grads = tape.gradient(loss, model.variables)    # 使用 model.variables 這一屬性直接獲得模型中的所有變量
optimizer.apply_gradients(grads_and_vars=zip(grads, model.variables))
if i % 10 == 0:
    print(i, loss.numpy())
    print(model.variables)

輸出結果如下:

0 250.0
10 0.73648137
20 0.6172349
30 0.5172956
40 0.4335389
50 0.36334264
60 0.3045124
70 0.25520816
80 0.2138865
90 0.17925593
[<tf.Variable ‘linear/dense/kernel:0’ shape=(3, 1) dtype=float32, numpy=
array([[0.40784496],
[1.191065 ],
[1.9742855 ]], dtype=float32)>, <tf.Variable ‘linear/dense/bias:0’ shape=(1,) dtype=float32, numpy=array([0.78322077], dtype=float32)>]

作者:devCK凱
鏈接:https://www.jianshu.com/p/12127f2a4488
來源:簡書
著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。

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