基於Ubuntu+Python+Tensorflow+Jupyter notebook搭建深度學習環境


基於Ubuntu+Python+Tensorflow+Jupyter notebook搭建深度學習環境

前言一、環境准備環境介紹軟件下載VMware下安裝UbuntuUbuntu下Anaconda的安裝二、Xshell遠程連接Ubuntu系統三、Jupyter notebook服務器的配置及遠程訪問四、遠程環境的測試Tensorflow軟件庫的安裝簡單爬蟲數據可視化基於神經網絡實現fashion_mnist圖片的識別總結

前言

如今,人工智能、深度學習等高深知識逐漸融入大家的視野,小大驗證碼的識別,大到無人駕駛技術等都離不開深度學習。迎合時代的腳步,跟上技術的潮流,開始學習深度學習首先需要搭建深度學習環境。搭建環境的方式也有不少,本文主要是介紹,基於Ubuntu+Python+Tensorflow+Jupyter ntebook來搭建環境,以便開始深度學習之旅。該文主要從以下幾個部分的內容來進行介紹:

  • 環境准備
  • Xshell遠程連接Ubuntu
  • Jupyter notebook服務器的配置及遠程訪問
  • 深度學習遠程環境的測試

OK,話不多說,開始進入正軌吧。(#`O′)


一、環境准備

環境介紹

  • 准備兩台計算機,一個作為服務端,一個作為客戶端,通過客戶端遠程連接服務端的深度學習環境。
  • 服務端:Linux系統(Ubuntu),也可根據自身需求使用其他Linux系統。
    Ubuntu介紹:Ubuntu(友幫拓、優般圖、烏班圖)是一個以桌面應用為主的開源GNU/Linux操作系統,Ubuntu 是基於Debian GNU/Linux,支持x86、amd64(即x64)和ppc架構,由全球化的專業開發團隊(Canonical Ltd)打造的。
    Linux系統區別於windows系統最大的區別是其主要是利用終端 Shell 命令來進行一系列的操作,所以在實際使用過程中常常用來搭建服務器,該系統搭建在VMware虛擬機中。
  • 客戶端:Windows10系統
    這個大家再熟悉不過了,就不介紹了。
  • Anaconda
    Anaconda介紹:Anaconda指的是一個開源的Python發行版本,其包含了conda、Python等180多個科學包及其依賴項。所以說,當我們下載了Anaconda之后就不必要再下載Python其他包了,其內部集成了大量大Python工具,其中就包括我們這篇文章的主角Jupyter notebook。
  • Xshell
    這個就沒什么好說的了,它主要是一種遠程連接的工具,使用它之后我們就可以通過ssh協議來遠程連接Ubuntu系統了,而且它常常與遠程文件傳輸工具Xftp配套使用。

軟件下載

這里給大家兩種方式進行下載,一個是官網下載,如果官方下載比較慢的可以在下方網盤進行下載,大家根據自己的方便下載即可。

官網:

  1. Anaconda:https://www.anaconda.com/download/,於服務端下載
  2. Xshell:https://xshell.en.softonic.com/?ex=BB-682.0,於客戶端下載
  3. Ubuntu:https://www.ubuntu.com/download/desktop,於服務端下載
  4. VMware:https://www.vmware.com/,於服務端下載

網盤:

  1. Anaconda:https://pan.baidu.com/s/1k8JdX5vo62j_I1jAy3Airw, 密碼:bhfv,於服務端下載
  2. Xshell:https://pan.baidu.com/s/1KKqsFrhbPUM2Yc_Jukm5sw, 密碼:fi0y,於客戶端下載
  3. Ubuntu:https://pan.baidu.com/s/1Zwz1GGlEtlStnS-5OFsecQ, 密碼:50yw,於服務端下載
  4. VMware:https://pan.baidu.com/s/1-h0HLJGrXbJjwzfU5I2rww, 密碼:hjnq,於服務端下載

VMware下安裝Ubuntu

注意:以下內容都是在服務端計算機中進行配置

在VMware虛擬機下安裝Ubuntu系統雖然有點步驟,也需要點時間,但是並不復雜。在綜合考慮到時間成本與其給大家帶來的價值的關系下,博主就用文字描述了,暫時不貼圖了。但是你不必擔心,關鍵步驟還是會貼圖說明的,大家根據下方的流程搭建安裝即可 ( ﹁ ﹁ ) ~→。

  • 在服務端下載好VMware及Ubuntu之后。首先打開VMware你會發現他會讓你輸入VMware秘鑰,以下將給出幾個目前有效的秘鑰,當你使用的時候也許已經失效了,你可以自行查找可用的秘鑰即可:
FF31K-AHZD1-H8ETZ-8WWEZ-WUUVA
CV7T2-6WY5Q-48EWP-ZXY7X-QGUWD
ZY5H0-D3Y8K-M89EZ-AYPEG-MYUA8
ZC5XK-A6E0M-080XQ-04ZZG-YF08D
ZY5H0-D3Y8K-M89EZ-AYPEG-MYUA8
  • 輸入秘鑰之后 ,進入到了VMware的頁面了,這個時候我們需要用到在之前下載好的Ubuntu鏡像文件了,在VMware中新建一個虛擬機,流程如下:

以上便是VMware下安裝Ubuntu的全流程,如果在安裝過程中有什么問題歡迎聯系作者或在下方留言。

Ubuntu下Anaconda的安裝

在VMware下安裝好Ubuntu后,雖然Ubuntu內自帶了Python,但是其版本一般是2.7的,而且許多常用的工具包並沒用集成,所以我們還需要安裝Anaconda(一招解千愁),如果熟悉Java的話,Anaconda就類似Maven一樣的存在。我們根據以上介紹的Anaconda的下載方式在Ubuntu下載好Anaconda之后,進入到其目錄之下(或者cd操作),然后打開終端,執行如下命令來進行安裝:

bash Anaconda3-5.3.1-Linux-x86_64.sh    # 不要盲目的復制粘貼,根據自己所下載的Anaconda版本執行

執行之后會有一些列諸如同意協議之類的問題,我們直接默認默認選項即可(直接Enter,或者yes),直到出現Anaconda環境變量配置的顯示(不要無腦yes過頭了),我們需要選擇將其加入到環境變量中去。一系列操作之后,我們關閉終端然后在重新打開終端,然后在終端分別執行conda list、python命令,如果你的終端界面出現類似以下輸出,則恭喜你說明你已經完成了anaconda的安裝。

這里再說明一點:而如果你的終端輸錯報錯(未找到conda命令之類的)或者Python版本為2.7,那就說明你以上操作中未將Anaconda加入到環境變量(yes過頭),所以你需要手動配置Anaconda的環境變量,操作如下:

打開環境變量的配置文件,從這里我們就可以看出Linux和Windows下的操作的區別了(windows一般是通過界面的形式進行設置,而Linux下則大多數通過終端並使用vim進行配置)

# 打開環境變量的配置文件,從這里我們就可以看出Linux和Windows下的操作的區別了
# windows一般是通過界面的形式進行設置,而Linux下則大多數通過終端並使用vim進行配置
sudo vim gedit /root/.bashrc    

打開文件之后我們需要在文件末尾添加如下內容(需要熟悉vim操作),其中XXX為你的Anaconda的bin目錄,例如我的是/home/lxj/anaconda3/bin

export PATH="XXX:$PATH"   # XXX為你的Anaconda的bin目錄,例如我的是/home/lxj/anaconda3/bin

然后保存(Esc -> shift+: -> wq -> 回車),在終端輸入source ~/.bashrc進行更新即可完成Anaconda環境變量的配置,不出意外的話再次分別執行Python、conda list命令之后你會看見conda包的列表以及Python3.7的輸出了。

補充:這里額外說明一下,以上的操作是使用Vim進行文件編輯的,他不同於windows下的記事本等,而是通過特定的操作來對文件進行編輯。對於熟悉Vim操作的應該會理解以上Anaconda環境變量的配置,然而如果是對Vim比較陌生的朋友可能會卡殼,所以在這里簡單介紹一些vim的操作:

在終端使用vim命令之后將會進入到vim的界面,此時的界面是不允許modify任何內容的,只允許read only。此時我們輸入i將會進入到vim的編輯模式,現在就能對該文件進行修改了。文件內容修改完成之后,我們需要退出該vim編輯模式,vim 的退出常用的有以下幾種(首先輸入Esc鍵):

  • q! -> 不保存文件修改並退出
  • wq -> 保存文件的修改並退出
  • wq! -> 有時候我們需要root權限才能編輯文件,使用該命令之后就能夠強制修改並退出。

對於以上Anaconda環境變量的配置,vim的熟悉至此就足夠了,順便介紹一下其他常用的命令供大家參考

  • read模式下雙擊d -> 刪除當行內容
  • Ctrl+b -> 內容向前移動一頁
  • ctrl+f -> 內容向后移動爺爺
  • shift+g -> 鼠標指針定位到最后
    常用的就是以上一些了,其他的操作有需要的自行學習

注意:以上內容都是在服務端計算機中進行配置

至此,我們已經完成了環境的搭建,接下來我們介紹一下如何使用Xshell遠程連接Ubuntu操作


二、Xshell遠程連接Ubuntu系統

注意:以下內容都是在客戶端計算機中進行配置

安裝好Anaconda之后,我們需要通過Xshell使用Xshell來遠程連接我們的Ubuntu系統,此時我們的目標需要轉移至客戶端了。

首先在以上軟件下載中根據鏈接下載Xshell,之后Windows傻瓜式安裝好Xshell(順便把Xftp安裝下,與Xshell配套使用的,雖然在本文中使用不到)。之后的操作會有幾個坑,但是不必擔心,下面會詳細帶你一個一個的填掉 o(*≧▽≦)ツ┏━┓。

坑一:連接失敗
我們雙擊打開Xshell,並點擊文件並新建,然后根據如下圖進行操作:

補充,上方中的主機屬性是填Ubuntu的ip地址,該地址可在Ubuntu的終端執行ifconfig(windows是ipconfig)命令得到。

以上信息填寫完之后在出現的界面輸入自己Ubuntu下的用戶登錄密碼即可。
執行之后你會發現連接失敗,此時我們需要檢查一下Ubuntu是否與客戶端處於同一網段下,可以將Ubuntu設置成橋接模式(右鍵Ubuntu虛擬機然后進行設置,一般用於有線連接情況)或者使用Nat模式(用於無線),之后再次檢查一下客戶端(Windows10)是否能夠ping通服務端(Ubuntu),在客戶端的cmd中執行如下:

ping XXX.XXX.XXX.XXX    # XXX.XXX.XXX.XXX為服務端的ip

在以上操作之后,一般就能ping通了,如果失敗了則在Ubuntu終端下執行sudo wfw disable命令關閉防火牆。

坑二:連接失敗 (ノへ ̄、)

在如上操作之后,我們再次嘗試重新連接。我們可以發現依然連接失敗,顯示拒絕連接之類的信息。這是因為Xshell是通過ssh協議來連接Ubuntu的,但是Ubuntu默認是沒有開啟ssh服務的,所以我們需要在其終端執行如下命令來開啟ssh服務:

sudo service ssh restart

之后我們再次嘗試連接。

坑三:連接失敗 (ノへ ̄、) (ノへ ̄、)

一般來講,這個時候依然是連接失敗,因為在默認情況下Ubuntu未安裝ssh服務,此時我們需要在Ubuntu下安裝ssh服務,執行以下命令進行安裝:

sudo apt-get install openssh-server

待其安裝好后,我們再再再次連接Ubunut。如果無法安裝,則需要執行apt-get update進行更新,更新之前如果出現無法獲得鎖相關的報錯信息,則執行如下命令斷開apt進程后再次更新:

# 查看apt相關進程
ps aux |grep apt
# 然后把apt進程殺掉
kill -9 進程號
# 重新更新apt-get
apt-get update

以上坑踩過之后也該連接成功了吧。的確此時你將成功連接到Ubuntu了,之后Xshell將打開一個終端,這個終端就是Ubuntu下的終端了,也就是說我們可以使用該終端控制Ubuntu了,並對其進行Shell操作。ヽ(✿゚▽゚)ノ


三、Jupyter notebook服務器的配置及遠程訪問

由於我們在之前已經安裝過了Anaconda,所以此時的Ubuntu就已經集成了ipython 以及jupyter-notebook(Anaconda就是這么的強大)。對此,我們將通過Xshell遠程連接Ubuntu來搭建Jupyter notebook的服務器,並對其進行遠程訪問。

  • 在終端中啟動ipython或者python,然后執行以下命令
from IPython.lib import passwd
passwd()

上述命令執行之后將會在終端顯示設置密碼,方便起見,在這我們將密碼設置成:123,之后enter並確認即可完成密碼的設置。

注意:這里的密碼是暗文的形式,輸入之后不會顯示的,還有此時你輸入的密碼需要記住,因為我們待會遠程訪問Jupyter notebook服務器的時候需要用到該密碼進行登錄

密碼輸入之后,我們將會看到有一個較長字符串,該字符串是上述密碼的一個加密形式,我們需要將其復制下來,在之后的ipython_notebook_config.py文件的設置中需要使用,操作結果如下圖所示:

  • 隨后為了方便上述加密密碼字符串的記錄,我們在此開啟另一個終端(這也是Xshell的方便所在),然后使用如下命令創建一個服務器名,比如,在此我們將該名字設置為:XXX
ipython profile create XXX

在上述服務器名創建完成之后,將在終端輸出兩個py文件(ipython_config.py、ipython_kernel_config.py)路徑,之后使用如下cd命令我們進入到.ipython路徑cd ./.ipython。具體操作圖示如下:

  • 進入.ipython目錄之后使用ls命令將會列出上述創建的兩個py文件所在,但是我們需要再額外創建一個py配置文件並對其進行設置,在這里我們使用vim來進行操作,關於vim的使用,上述的Anaconda環境配置過程中已經介紹了,遺忘的朋友可以返回看一看再熟悉一下。熟悉之后我們完成如下步驟:
cd .ipython/profile_txj     
vim ipython_notebook_config.py

進入到vim環境之后我們在ipython_notebook_config.py文件中編輯如下內容,主要是配置notebook的登錄密碼(加密后的形式)以及服務的開放端口:

c = get_config()
c.IPKernelApp.pyalb = "inline"
c.NotebookApp.ip = "*"
c.NotebookApp.open_browser = False
c.NotebookApp.allow_root = True
c.NotebookApp.password = u"加密后的密碼"    # 這里我們需要使用上述加密后的密碼,在另一個終端可見
c.NotebookApp.port = 8888   # 在這里,我們需要設置一個jupyter-notebook的端口,盡量設置的少見點,以免造成端口沖突

編輯好后,wq命令保存並退出。

  • 在上述一切操作完成之后,我們現在來開啟該服務器,新建一個終端並執行如下命令
jupyter notebook --config=【你的ipython_notebook_config.py文件路徑】    
# 例如/home/lxj/.ipython/profile_XXX/ipython_notebook_config.py

在上述命令執行之后,如果出現如下圖片所示內容,則說明我們的服務端已經正常啟動

  • 在服務端啟動完成之后,我們在客戶端打開瀏覽器,訪問XXX.XXX.XXX.XXX:8888(ubuntu的ip加開放的端口)試試,看看能否正常請求。如果隨后出現一個如上所示的Jupyter notebook的登錄頁面,那么恭喜你,至此Jupyter notebook服務器配置完成,並能夠遠程訪問了。在表單中輸入你所設置的密碼(上面第一步設置的密碼,123)即可開始你的深度學習之旅了。

以上就是Jupyter notebook服務器的配置及遠程訪問的內容了,但是能否正常使用呢,我們下面將通過幾個簡單的例子來對其進行測試。


四、遠程環境的測試

Tensorflow軟件庫的安裝

TensorFlow™ 是一個采用數據流圖(data flow graphs),用於數值計算的開源軟件庫。節點(Nodes)在圖中表示數學操作,圖中的線(edges)則表示在節點間相互聯系的多維數據數組,即張量(tensor)。它靈活的架構讓你可以在多種平台上展開計算,例如台式計算機中的一個或多個CPU(或GPU),服務器,移動設備等等。TensorFlow 最初由Google大腦小組(隸屬於Google機器智能研究機構)的研究員和工程師們開發出來,用於機器學習和深度神經網絡方面的研究,但這個系統的通用性使其也可廣泛用於其他計算領域。

上述操作完成之后,我們需要在Anaconda下安裝Tensorflow包,這里我們可以采用Anaconda虛擬環境中安裝:

  1. Anaconda下通過create命令並指令Python版本創建一個虛擬環境
  2. conda env list可以看見當前所擁有的環境
  3. activate命令激活所需要的虛擬環境
  4. 成功進入后后我們即可直接通過pip進行安裝tensorflow2(本文直接安裝CPU版本,如需安裝GPU版本可看注釋)
# Anaconda下通過`create`命令並指令Python版本創建一個虛擬環境,命名tensorflow2
conda create --name tensorflow2 python=3.6、
# `conda env list`可以看見當前所擁有的環境
conda env list
# `activate`命令激活所需要的虛擬環境
conda activate tensorflow2
# 成功進入后后我們即可直接通過pip進行安裝`tensorflow2`
pip install -U tensorflow -i https://pypi.tuna.tsinghua.edu.cn/simple --default-timeout=1000

# GPU版本安裝:conda create -n tf2 tensorflow-gpu,執行之后會自動安裝 CUDA,cuDNN,TensorFlow GPU 等

在虛擬環境安裝好Tensorflow2之后,要想在Jupyter notebook下使用該虛擬環境,我們還需要在該環境下安裝ipkernel:

conda install ipykernel
python -m ipykernel install --name tensorflow2 --display-name tensorflow2

成功安裝之后,在tensorflow2虛擬環境下使用jupyter notebook命令即可啟動,登錄之后在服務頁面中即可指定tensorflow2 kernel環境來編寫代碼。通過上述的操作,我們已經完成了所有的工作。下面我們對其進行驗證,看看Anaconda下的第三方包能否正常使用。為此,我們通過以下幾個小的案例來進行驗證:

  • 百度及其子鏈接的簡單爬蟲(requests, BeautifulSoup
  • 數據可視化操作(numpy,matplotlib,skimage
  • 基於神經網絡實現fashion_mnist圖片的識別(Tensorflow、Keras

簡單爬蟲

import requests
from bs4 import BeautifulSoup

def get_page(url, headers=None):
    return requests.get(url).text

if __name__ == "__main__":
    baidu_url = "https://www.baidu.com"
    baidu_soup = BeautifulSoup(get_page(baidu_url), "html.parser")
    son_links = [biaoqian_a.attrs["href"for biaoqian_a in baidu_soup.find_all("a")]
    for index, son_link in enumerate(son_links):
        print("正在請求第{}個頁面".format(str(index)))
        print(get_page(son_link))

數據可視化

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib as mpl
% matplotlib inline

for module in np, pd, mpl:
    print(module.__name__, module.__version__)

if __name__ == "__main__":
    ax =pd.DataFrame(np.random.randn(10006), columns=list('ABCDEF')).cumsum().plot(secondary_y=["D""E""F"])

    ax.set_ylabel('ABC plot')
    ax.right_ax.set_ylabel('DEF scale')
    ax.legend(loc='upper left')
    ax.right_ax.legend(loc='upper right')

    plt.show()

基於神經網絡實現fashion_mnist圖片的識別

import tensorflow as tf
import numpy as np
from matplotlib import pyplot as plt
import matplotlib as mpl
%matplotlib inline

for module in tf, np, mpl:
    print(module.__name__, module.__version__)

if __name__ == "__main":
    (x_train_all, y_train_all), (x_test, y_test) = tf.keras.datasets.fashion_mnist.load_data()
    x_valid, x_train = x_train_all[:50000], x_train_all[50000:]
    y_valid, y_train = y_train_all[:50000], y_train_all[50000:]

    model = tf.keras.models.Sequential()
    model.add(tf.keras.layers.Flatten(input_shape = [2828]))  # 定義輸入層
    model.add(tf.keras.layers.Dense(300, activation="relu")) # 定義全連接層(最普通的神經網絡),中間定義兩個隱藏層
    model.add(tf.keras.layers.Dense(100, activation="relu")) # 再定義一個全連接層
    model.add(tf.keras.layers.Dense(10, activation="softmax")) # 定義輸出層

    model.compile(loss = "sparse_categorical_crossentropy",
                 optimizer = "adam",
                 metrics = ["accuracy"])

    history = model.fit(x_train, y_train, epochs=10,
             validation_data=(x_valid, y_valid))

    pd.DataFrame(history.history).plot(figsize=(85))
    plt.grid(True)
    plt.gca().set_ylim(01)
    plt.show()


總結

通過上述的演示,已經完成了windows10下使用xshell遠程連接linux系統以及遠程訪問jupyter-notebook服務,並通過幾個小例子來對其進行驗證說明可以正常使用linux下的anaconda。這樣的話即可實現兩台PC級之間的協調工作,一台用作服務端提供環境,另外一台作為客戶端來遠程進行訪問並編寫代碼,而且其中的優勢也是顯而易見的,既能在一定程度上減小計算機的壓力,又能方便管理且易於操作。另外,以上的環境搭建只作為一個案例,並不唯一,比如你可以使用Linux Centos、aliyun雲服務器等。如果以上內容幫助到了你,請點個贊吧.゚ヽ(。◕‿◕。)ノ゚.:。+゚

2018-09-10,By 濤濤,於上海


免責聲明!

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



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