深度學習入門篇01(Tensorflow-gpu的安裝)


此文轉載自:https://blog.csdn.net/qq_39228514/article/details/111591582

深度學習入門篇01(Tensorflow-gpu的安裝)

  1. 前期准備
    Tensorflow-gpu的安裝

  2. MLP(多層感知機的實現)
    Perceptron(感知機)

1.前期准備

Tensorflow主要分為1.x和2.x,目前來說語法上最簡單的是2.x版本。其gpu版本的安裝也很方便,僅需要兩個依賴工具包(Cuda,cuDnn)即可,官網下的太慢,所以這里直接放出兩個工具包(對應tensorflow2.3.0版本)的鏈接:
CUDA和cuDNN鏈接
提取碼:
TWTW

以下是官網中工具包和對應版本的圖示:
在這里插入圖片描述
想要知道更多版本的對應情況也可以去官網查看:
tensorflow-gpu版本對應表
CUDA的安裝很簡單直接下一步到安裝完成就行,然后將cuDnn文件夾解壓后的bin,include和lib文件夾替換CUDA安裝目錄下對應名字的文件夾就行
在這里插入圖片描述
接下來開始安裝Tensorflow的gpu版本:
先將conda下載文件的路徑更換為清華源,防止下載失敗報錯

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge 
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/

# 設置搜索時顯示通道地址
conda config --set show_channel_urls yes

Tips: 這里是一條一條執行喔,不是一次執行。
創建名為deeplearning的虛擬環境

conda create -n deeplearning python=3.7  #tf為虛擬環境名稱,可以換成自己的

創建之后需要激活才能使用

conda activate deeplearning 

出現以下的前綴就代表進入了虛擬環境:
在這里插入圖片描述
要注意此時的虛擬環境只是一個純凈的python環境,沒有依賴包。

然后用conda安裝Tensorflow-gpu版本,因為我的CUDA和cuDnn都是對應2.3.0版本的tensorflow的,所以在這里就直接安裝2.3.0版本的了

conda install tensorflow-gpu==2.3.0

裝好過后在pycharm或者shell中查看GPU是否可用就行了:

import tensorflow as tf
print(tf.test.is_gpu_available())

輸出以下信息就表示安裝完成且可用了,最重要的是最后的True:
在這里插入圖片描述
到這里算是安裝完成了。

2.多層感知機的實現

感知機(感知器)算法可以說是最開始的機器學習算法,在這里可以簡單看作神經網絡中單個的神經元,再簡化一下說就是一個 y ( x ) = ω x + b y(x) = \omega x + b y(x)=ωx+b的函數。

多層感知器顧名思義就是多個感知器相連,其連接規則就是最基礎的全連接,可以使用Tensorflow2.0中Kersa框架來很快速的搭建一個多層感知機:

import time
from tensorflow import keras
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

# 加載數據集
fashion_mnist = keras.datasets.fashion_mnist
# 分為訓練集和測試集
(X_train_full, y_train_full), (X_text, y_text) = fashion_mnist.load_data()  # 每個圖象為28*28的陣列
# 將訓練集再分出一個驗證集
X_valid, X_train = X_train_full[:5000] / 255.0, X_train_full[5000:] / 255.0  # 將像素值除以255,將所有像素值降低到0-1區間
y_valid, y_train = y_train_full[:5000], y_train_full[5000:]

# 創建類名列表
class_names = ['T-shirt/top', 'Trouser', 'Pullover', 'Dress', 'Coat', 'Sandal', 'Shirt', 'Sneaker', 'Bag', 'Ankle boot']

# 建立一個具有兩個隱藏層的分類MLP
model = keras.models.Sequential()  # Sequential模型為最簡單的,由順序連接的單層堆棧組成,成為順序API
model.add(keras.layers.Flatten(input_shape=[28, 28]))  # Flatten簡單預處理,將圖像轉為一維數組,
# 也可不指定input_shape,則權重會在有數據輸入時才初始化
model.add(keras.layers.Dense(300, activation='relu'))
model.add(keras.layers.Dense(300, activation='relu'))
model.add(keras.layers.Dense(10, activation='softmax'))  # 10類,且softmax將輸出整合到0-1區間且和為1
# 也可使用列表方式來創建model
# model = keras.models.Sequential([
# keras.layers.Flatten(input_shape=[28, 28]),
# keras.layers.Dense(300, activation='relu'),
# keras.layers.Dense(100, activation='relu'),
# keras.layers.Dense(10, activation='softmax')
# ])
# print(model.summary()) # 展示model的所有層的基本信息

# 指定損失函數和要使用的優化器
model.compile(loss=keras.losses.sparse_categorical_crossentropy,  # 損失函數為多分類交叉熵
              optimizer=keras.optimizers.SGD(),  # 優化函數為隨機梯度下降
              metrics=[keras.metrics.sparse_categorical_accuracy])
# model.compile(loss='sparse_categorical_crossentropy',
# optimizer='sgd',
# metrics=['accuracy'])
# 開始訓練
start = time.process_time()
history = model.fit(X_train, y_train, epochs=30, validation_data=(X_valid, y_valid))
# 根據每一輪的loss畫圖
pd.DataFrame(history.history).plot(figsize=(8, 5))
plt.grid(True)
plt.gca().set_ylim(0, 1)  # 垂直坐標設為0-1區間
plt.show()

# 對新實例進行預測
X_new = X_text[:3]  # 取測試集的前三個
y_proba = model.predict(X_new)  # 輸出的是屬於每一類的概率
print(y_proba)
y_pred = model.predict_classes(X_new)  # 輸出的是屬於的類,此語句在20210101后會拋棄
# 可用np.argmax(model.predict(x), axis=-1)代替
print(y_pred)
print(np.array(class_names)[y_pred])

end = time.process_time()
print('time cost:', end - start)

注意這個Fashion Mnist數據集較大,第一次使用會默認從官網下載,非常慢,可以提前下好放在C:\Users\用戶名.keras\datasets下,並命名為fashion-mnist。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM