1. 程式人生 > >搭建一個新手學習AI/ML的Python環境

搭建一個新手學習AI/ML的Python環境

人工智能 深度學習

不知不覺消失了好久,公眾號也很久沒有更新了。因為跑去學習微軟AI方向的MPP課程了。MPP是目前微軟最先提供關於AI的培訓課程,關於MPP的學習體系,我後面會再寫一篇簡單的介紹。

???? MPP包含了很多的內容,開始學習的時候速度還挺快,到後面越來越艱澀。這也是很久沒有精力去更新內容的原因之一。在學習的過程中,逐步接觸到了AI或者ML所需要的Python環境。還記得我們之前的介紹嗎?通過Python去調用AI的很多API,來快速實現AI的一些功能。

??? 在學習Azure AI的API的eDoc的時候,就發現有一些示例代碼使用了Jupyter Notebook來體現。當時覺得,我有Python不就好了嗎?原汁原味地學習代碼。到了MPP課程中“強制”使用了notebook之後,發現這種方式確實很方便學習。這麽解釋吧,我復制完示例代碼,然後來運行之前,會嘗試閱讀代碼,然後加上自己的註釋。而notebook能將註釋或者筆記部分,單獨寫成md格式的塊。代碼則分列到另外的代碼塊。這樣就非常便於閱讀背景信息和筆記,而同時方便的運行調試代碼。

??? 另外,很多AI或者ML的課程,也會以notebook的文件格式提供筆記本幫助學習,所以,擁有一個notebook的環境還是很有必要的。下面我們就來嘗試使用最復雜的搭建方式,搭建一個notebook環境。

??? 還記得第一次使用VS Code寫Python的時候,會給代碼格式評分,規範化也是學習代碼的一部分,所以pylint還是需要的:
astroid-1.6.3 / isort-4.3.4 / lazy-object-proxy-1.3.1 / mccabe-0.6.1 / pylint-1.8.4 / wrapt-1.10.11

??? 這麽多AI的API都是以Web服務方式提供,快速調用API就離不開requests了:

certifi-2018.4.16 / chardet-3.0.4 / idna-2.6 / requests-2.18.4 / urllib3-1.22

??? 進行數據處理怎麽可以少了numpy?啥代碼貌似都要array啊~
numpy-1.14.2

??? 同樣,進行ML處理數據,pandas也是不可或缺滴~

pandas-0.22.0 / pytz-2018.4

??? 各種畫圖各種展現,沒有matplotlib咋整?

cycler-0.10.0 / kiwisolver-1.0.1 / matplotlib-2.2.2 / pyparsing-2.2.0

??? 安裝notebook就復雜點了,依賴的庫有點多~

MarkupSafe-1.0 / Send2Trash-1.5.0 / backcall-0.1.0 / bleach-2.1.3 / decorator-4.3.0 / entrypoints-0.2.3 / html5lib-1.0.1 / ipykernel-4.8.2 / ipython-6.3.1 / ipython-genutils-0.2.0 / ipywidgets-7.2.1 / jedi-0.12.0 / jinja2-2.10 / jsonschema-2.6.0 / jupyter-1.0.0 / jupyter-client-5.2.3 / jupyter-console-5.2.0 / jupyter-core-4.4.0 / mistune-0.8.3 / nbconvert-5.3.1 / nbformat-4.4.0 / notebook-5.4.1 / pandocfilters-1.4.2 / parso-0.2.0 / pickleshare-0.7.4 / prompt-toolkit-1.0.15 / pygments-2.2.0 / python-dateutil-2.7.2 / pywinpty-0.5.1 / pyzmq-17.0.0 / qtconsole-4.3.1 / simplegeneric-0.8.1 / terminado-0.8.1 / testpath-0.3.1 / tornado-5.0.2 / traitlets-4.3.2 / wcwidth-0.1.7 / webencodings-0.5.1 / widgetsnbextension-3.2.1

??? 然後要做MPP的實驗,自然少不了需要微軟的人工智能工具庫 CNTK~ 課程也挺奇怪,要求2.0版本,後面的課程則要求更新的版本,先安裝2.0的

scipy-1.0.1 / cntk-2.0

??? 其實以上列舉這麽多庫,沒有太大的意義,在使用pip安裝的時候,就會自動按照依存關系去安裝需要的庫。那我為什麽把這些庫都列出來呢?兩個原因,第一,如果我們需要離線安裝;第二,由於都知道的原因,訪問默認庫分發的時候,經常幹擾HTTPS流量導致下載失敗。這時就可以按照以上的清單,去pypi網站上照方抓藥了。

??? 安裝完畢,就能在本地使用notebook跑起來了。

技術分享圖片

??? 說了這麽多,沒有更方便的辦法嗎?有!

技術分享圖片

??? 其實MPP課程中使用了Anaconda來搭建用於學習AI/ML的環境。使用Anaconda可以方便的圖形化管理你的環境。不過我看看安裝文件就已經好幾百M,想想變形本可憐的200G空間,就沒安裝了。

???? 那麽,還有沒有方便的辦法呢?有!

???? 訪問 https://notebooks.azure.com? 啥東西都不用裝,打開就能用。

技術分享圖片

???? 學完ML的課程,感覺還是一臉懵~還需要時間再消化消化,不過環境需要更新了。更新CNTK倒是簡單:

PS C:\WINDOWS\system32> pip install cntk --upgrade
Collecting cntk
?? Downloading https://files.pythonhosted.org/packages/e0/66/bd529934288094c4a4a7110fa6797669d95ffa7fc3687275a5541b80a281/cntk-2.5.1-cp36-cp36m-win_amd64.whl (63.7MB)
???? 100% |████████████████████████████████| 63.7MB 181kB/s
Requirement not upgraded as not directly required: scipy>=0.17 in c:\program files\python36\lib\site-packages (from cntk) (1.0.1)
Requirement not upgraded as not directly required: numpy>=1.11 in c:\program files\python36\lib\site-packages (from cntk) (1.14.2)
Installing collected packages: cntk
?? Found existing installation: cntk 2.0
???? Uninstalling cntk-2.0:
?????? Successfully uninstalled cntk-2.0
Successfully installed cntk-2.5.1

??? 因為安裝CNTK 2.0的時候,依賴的scipy和numpy庫已經是當時最新,所以沒有自動更新。不過我還是自己手動刷到最新版了。

??? 然後,需要加上OpenCV了。去官網看了看,默認的支持是Python 2.7……這咋整啊?翻了翻網頁,貌似有非官方的庫提供了,既然大家都用,那就別猶豫了,裝上:

PS C:\WINDOWS\system32> pip install opencv_python
Collecting opencv_python
?? Downloading https://files.pythonhosted.org/packages/4c/25/151aeb11e80f99b97d3eb93a2c98bcacd857f28c4fb8865eb0201d800e97/opencv_python-3.4.0.12-cp36-cp36m-win_amd64.whl (33.3MB)
???? 100% |████████████████████████████████| 33.4MB 581kB/s
Requirement already satisfied: numpy>=1.11.3 in c:\program files\python36\lib\site-packages (from opencv_python) (1.14.3)
Installing collected packages: opencv-python
Successfully installed opencv-python-3.4.0.12

???? 驗證一下安裝:
PS C:\WINDOWS\system32> python
Python 3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 17:00:18) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>> print(cv2.__version__)
3.4.0

???? 貌似這裏有更新的版本,不過沒再手動下載安裝了。

https://www.lfd.uci.edu/~gohlke/pythonlibs/#opencv

??? 對了,在升級Python本身的時候,遇到一個有意思的錯誤:

C:\Personal\Hao.Hu\My Codes>jupyter
Fatal error in launcher: Unable to create process using ‘""c:\program files\python36\python.exe"? "C:\Program Files\Python36\Scripts\jupyter.exe" ‘

??? 查了一下,跟路徑設置導致編譯時生成的exe的路徑出錯有關。折騰了一番,改了路徑然後重新安裝庫,再次編譯的exe就沒問題了。




搭建一個新手學習AI/ML的Python環境