1. 程式人生 > >python機器學習密碼之初來乍到

python機器學習密碼之初來乍到

Python項目開發之環境搭建 Anaconda+Pycharm

機器學習近來火得可謂人盡皆知。其實樓主現在的研究方向是橢圓曲線密碼的硬件實現。so,我一直以為這跟Python,神經網絡啥的確是八竿子打不著,然而,這個世界上就是不缺那種能開先河能擺證據撂服眾生的大神。舉個栗子這篇文章learing the enigma with recurrent Neural Networks。是 2017年發表於AAAI 的一篇文章,AAAI 2017是指第31屆人工智能大會AAAI-17,是人工智能領域的最重磅會議之一。所以樓主也是很好奇,這裏的RNN究竟是對我們一個世紀之前的簡單的多表代換密碼enigma做了什麽,會如此的有價值呢。說起enigma,我也強烈推一波卷福氣質圖靈大神版的電影《模仿遊戲》,主要是關於二戰時期,以希特勒為首的納粹國依靠enigma密碼設備加密通訊,戰事順風順水。所謂魔高一尺道高一丈,盟國就出現了以圖靈為首的科研團隊,各種劇情起承轉合可能有失真實,但是結局很surprise,圖靈成功破解該密碼機。額,,言歸正傳,這篇論文呢,我仔細看了,並將其翻譯為中文用RNN學習Enigma。然後根據該論文中所講,我就去github上下載了相關代碼All Code。
作為一個python完全的小白,接下來便是急不可耐的想試試下這些代碼真的如文中所述如此機智。

Python開發環境搭建

今天主要講下環境配置的問題。真真是讓我頭疼的地方。試了好多方案均已失敗告終。
至於環境其實在文中作者也都詳細告知,要想成功的跑通別人的代碼,還是老實的按照人家的環境進行配置。但是對於我們平常使用Python環境學習的話,以下這些方案都可以使用。具體使用哪一種,依自己的需要決定。

方案一:簡單粗暴的直接下載Python3.6

官網直接下載Python3.6Python官網。具體過程安裝如下圖:
1、下載,以windows系統為例。
技術分享圖片
2、最好將軟件安裝包有條理的放在系統盤之外的其他盤,電腦上安裝的每個軟件都單獨創建文件夾,命名最好是英文,特別是技術類軟件,避免以後不必要的麻煩。清晰分類,也利於以後的清除。緊接著雙擊下載完後的Python36應用,進入如下界面:(推薦自定義安裝,軟件為自己安裝,並且如果不想之後手動添加環境變量,這裏的Add Python 3.6 to PATH

一定要勾選哦)
技術分享圖片
3、選中自定義安裝,以下就一路next.
技術分享圖片
4、選擇自己安裝的程序所在的文件夾,最好安裝路徑自己建個install文件夾,就可以把所有安裝時附帶的配置文件全都放在一個文件夾下面。
技術分享圖片
5、稍等便可安裝完成。
技術分享圖片
6、安裝完成後,關掉頁面。快捷鍵WIN+R,輸入cmd打開命令窗,輸入python,可以看到如下python版本信息,安裝成功。
技術分享圖片
7、如果輸入python回車後,出現如下窗口。就是步驟2中木有勾選自動添加路徑,需要自己添加路徑。
技術分享圖片
8、添加路徑的方法網上很多,我簡單描述下就不放圖了。桌面-->右鍵 計算機-->屬性-->高級系統設置-->高級-->環境變量-->用戶變量-->path(這裏添加在用戶變量的path裏就可以,之前我安裝其他軟件的時候,出現問題看到有說將路徑添加在系統變量路徑,其實計算機在搜索軟件的時候優先搜索系統環境變量,如果沒有找到再搜索用戶變量,所以直接將路徑填寫在用戶變量路徑即可)-->編輯。此時,回到PYTHON安裝路徑進入scipts找到python.exe將其路徑拷貝。粘貼到path路徑放到最前面註意分號與後一個盤符隔開。
9、至此,我們可以從開始-->所有程序-->python-->python idle,打開進入python shell,簡單的起步語句就可以開始了。這是python自帶的IDE,它簡單快捷,學習python測試或者編寫小型軟件很方便,占用資源小。至於各種package,可以根據自己項目的需求逐一安裝。那在對於包的管理方面,anaconda確實好用,以下會重點講述。

方案二:Eclipse+PyDev 進行Python項目開發

談及Eclipse,大家比較熟知的是Java項目開發,Eclipse是JAVA的IDE,功能強大,而且Eclipse寫Python或者JAVA都可以,支持跨平臺在Mac、Linux、Windows上都能運行。eclipse的正常運行必須先有java jdk的環境才可以。所以我們按以下步驟進行配置。
1、安裝jdk,選擇與自己電腦匹配的版本下載,安裝比較簡單,可以參考相關的說明。環境變量的添加方法同上。版本可根據自己的電腦系統選擇,如何你的是Windows 64位,那麽可以下載64位或者32位。但是接下來的eclipse也要安裝相對應的版本即64或者32。如果電腦是32位的,就安裝32位的jdk和eclipse。jdk安裝完成後,環境變量配置完成後,快捷鍵wina+r,cmd打開命令窗,輸入java,如下圖,即可安裝成功。
技術分享圖片
然後可以輸入 java -version查看所安jdk的版本,下圖是我的電腦顯示:技術分享圖片
2、官網下載適合自己電腦系統的以及與你的jdk一致的Eclipse版本。稍等變會出現如下提示。
技術分享圖片
2、下載成功後,點擊解壓即可雙擊eclipse.exe直接使用eclipse,它無需安裝且免費使用。
3、安裝Python,這個完全同方案一中的python安裝方法。
3、然後便是插件pydev的下載安裝。 啟動Eclipse,點擊Help->Install?New?Software...?在彈出的對話框中,點擊Add按鈕。Name填寫Pydev,location中填寫:http://pydev.org/updates,
-->OK,在彈出的對話框勾選pydev.-->next.耐心等待即可。
4、配置python解釋器。安裝完Pydev後,需要配置Python解釋器。打開eclipse,windows-->Preferences-->
PyDev->Interpreter->Python?Interpreter
技術分享圖片
然後點擊右邊的New按鈕,彈出如圖對話框,添加解釋器,name可根據自己的喜好自由選擇。
技術分享圖片
點擊OK,Pydev會自己加載該python解釋器所帶有的lib文件。點擊OK--->apply配置生效。
至此,就可以開始簡單的python程序的開發了。

方案三:Anaconda+Pycharm進行Python項目開發

Anaconda是包管理器和環境管理器。Anaconda的英文本意是“蟒蛇”,所以我們看到Anaconda 的logo就像一只首尾合抱的蟒蛇。
技術分享圖片
我們看到對於Anaconda的logo下面,The Most Popular Python Data Science Platform,OK,為什麽說Anaconda是最流行的Python數據科學平臺?因為Anaconda附帶了一大批常用數據科學包及其依賴項。因此我們可以用它來很方便高效的處理數據。比如管理packages,Anaconda是在conda(一個包管理器和環境管理器)上發展出來的。在我們進行項目開發的時候,會需要用到很多第三方pkg,conda就可以很方便的在計算機上安裝和管理這些pkg。還有管理環境,由於Python2與Python3語法仍有差異,不同的項目可能需要不同的Python版本,同時安裝2個可能造成混亂,conda可以為不同的項目建立不同的運行環境。所以我推薦使用Anaconda。 Anaconda可以跨平臺使用(Windows、mac、Linux)。

Anaconda的安裝

1、官網下載Anaconda.註意根據自己電腦的系統選擇對應的版本,比如我的電腦是Windows 64位:
技術分享圖片
2、如果你的計算機上已經安裝了Python,Anaconda的安裝不會造成影響,實際上腳本和程序的使用默認Python是Anaconda附帶的Python.如果是windows 10系統,安裝軟件時註意右鍵以管理員身份運行。下面開始安裝,雙擊打開.exe文件,
技術分享圖片
3、同意條款:
技術分享圖片
4、just for me 一路next
技術分享圖片
5、選擇自己喜歡的單一文件夾,next
技術分享圖片
6、這裏註意勾選,就不用安裝之後再手動添加Python的路徑啦。
技術分享圖片
7、然後就是休息等待ing,時間可能會稍長些。
技術分享圖片
技術分享圖片
技術分享圖片
8、安裝完成後,點擊開始-->所有程序-->Anaconda-->Anaconda Prompt終端。
技術分享圖片
9、輸入conda list,可以查看剛剛安裝的內容。
技術分享圖片
10、註意,為了避免之後莫名其妙的報錯。這裏可以輸入conda upgrade --all更新所有的軟件。中間有提示是否更新是輸入 y.,因為初始安裝的文件版本一般比較老舊,因此提前更新可以避免不必要的麻煩。
技術分享圖片
技術分享圖片

conda管理packages

1、比如我們安裝pandas,打開Anaconda Prompt,語法格式為:conda install package_name,所以輸入conda install pandas,技術分享圖片
若要選用特定的版本,如例子,可以輸入conda install package_name=1.1,conda還會自動安裝所需包的依賴項,這對於初學者來說真是perfect。

2、卸載不用的package。同樣是Anaconda Prompt中輸入conda remove package_name
3、更新包,上面提到更新全部的文件是conda upgrade --all,如果你只想更新特定的文件,
conda update package_name
4、查看已經安裝完成的packages,conda list。這個也可以從自己的Anaconda安裝路徑處,shift+右鍵-->在此處打開命令窗,也可以打開並輸入conda list進入:
技術分享圖片
5、對於本論文中的環境,我們這裏需要安裝的是tensorflow1.1,numpy,打開Anaconda Prompt,輸入conda install tensorflow=1.1,安裝見下圖:
技術分享圖片
可以看到conda會自動安裝tensorflow所需的依賴項。
技術分享圖片
6、至此,Anaconda就安裝完畢了。它本身集成安裝了Python3,conda我們又安裝了所需要的packages,所以,接下來便是開發平臺Pycharm的安裝與配置。

Pycharm的安裝與配置

1、官網下載Pycharm,選擇與自己電腦系統對於的版本。下圖中可以看出Pycharm有2個版本,professional功能齊全,但需要付費,but免費試用。
技術分享圖片
2、雙擊安裝,
技術分享圖片
技術分享圖片
3、install安裝,finish。
技術分享圖片
4、打開Pycharm-->accept-->OK
技術分享圖片
試用30天,破解的話大家可以自行可以去搜索方法,我現在用的是試用。
技術分享圖片
技術分享圖片
OK,Pycharm可以正常試用了。
5、下面是一些Pycharm的配置問題。因為剛初始的Pycharm版本字體特別小,很多地方可能會讓我們覺得看著很不舒服。所以適當調整為更符合我們習慣的樣式也有助於我們的學習。在不打開或者新建工程的情況下就可以進行相關的配置:
技術分享圖片
A.主題設置
進入Settings-->Appearance & Behavior-->Appearance
技術分享圖片
Darcula黑灰色背景 ,護眼。
B、字體設置
直接在搜索框輸入font即可快速搜索,然後根據自己的相關設置相關參數。
技術分享圖片
Settings中還可以設置多種樣式,方法就是這樣,其余的大家都可以根據自己的喜好隨心設置啦。

項目調試

對於本論文中的項目開發所需要的環境方案三已經設置完成了。那麽接下來我們來簡單的跑一下這個程序。
1、從githu上下載下來代碼後,將.py全都文件放在一個工程文件夾中,文件夾的名稱可任意(除中文外)。打開Pycharm,啟動後,直接點擊OPEN,找到你下載的工程文件打開。
技術分享圖片
2、我是之前已經跑過一遍的工程頁面。如果你是初次打開,別忙著運行主程序,首先要去設置解釋器。仍然從Settings出發,按下圖所示。
技術分享圖片
3、添加解釋器:點擊方框出設置按鈕--->add然後選擇Anaconda安裝文件夾的Python36,這是Pycharm會自動加載其所含的packages,如我們剛剛安裝的tensorflow1.1版本,最後一項是最新版本,可選擇升級與否。python解釋器選好之後,OK確定即可。
技術分享圖片
4、返回主頁面,圖中方框處上面的倒三角點開編輯配置,否則後面的綠色的運行符號是灰色,不可用狀態。
技術分享圖片
5、點擊方框中的綠色+,選Python,其余的按圖中所示即可。
技術分享圖片
6、返回主頁面之後,直接點擊紅色方框內的運行符號,如圖程序正在運行。
技術分享圖片
程序運行遇到問題:Python中的編解碼問題,正在查找資料,以後會繼續更新。大家有好的意見和解決辦法,歡迎留言共同學習。
技術分享圖片
註意:1、大家在遇到莫名其妙的報錯時,不防在Anaconda Prompt中conda upgrade --all更新下所有的庫文件,真的可以解決很多不必要的麻煩。
2、Python2.7只有在mac和Linux下支持tensorflow。Windows系統中,Python3支持。Python核心團隊計劃在2020年停止支持Python 2。NumPy項目自2010年以來一直支持Python 2和Python 3,並且發現支持Python 2對我們有限的資源增加了負擔;因此,計劃將停止支持Python 2。現在,Python核心團隊已經進入了社區支持的Python 2的最後幾年,NumPy 項目公布了它逐步淘汰 Python 2 支持的時間表,計劃在此期間幫助下遊生態系統制定計劃並完成過渡。到2018年12月31日為止,所有的NumPy版本都將完全支持Python2和Python3。從2019年1月1日開始,任何新的功能版本都只支持Python3。所以,對於現在的Python初學者來說,不用糾結與兩者的語法差異,package支持之類的問題,直接以3位標準學習肯定沒有問題的。
備註:作者同樣是初學者,文中不免有很多疏漏之處,歡迎大家提出改進,互相交流學習。

python機器學習密碼之初來乍到