機器學習筆記3-Tensorflow簡介

前言

前面兩篇主要寫了一些機器學習的基礎概念,從本篇開始咱們來了解下深度學習。深度學習是機器學習的一個子集,是一種特殊的數學模型。一樣是從輸入到輸出,深度學習在這二者之間會有不少層稱爲「隱層」(Hidden Layers)的層,每一層將會將輸入內容進行計算並自我調節,最終獲得合理模型,這種數學模型很是像人類目前對大腦工做原理的認知,因此也稱之爲「人工神經網絡」。
html

如今市面上有數十種深度學習框架:Wiki傳送門。一個個學過來確定精力不夠,那咱們就學綜合評分最高的那個:Tensorflownode

Tensorflow是由Google團隊在2015年11月9日以Apache 2.0開源許可證開源的,但剛發佈的版本有諸多缺陷:bug比較多、性能比較差、使用難度比較高。在2017年2月16日,Google宣佈Tensorflow 1.0正式發佈,該版本適用於工業生產場景。因此在該版本發佈以後,對深度學習領域產生了極大的影響,其大大簡化了編寫深度學習的代碼難度,而且在Google這面大旗下,被各類專業人員以及機器學習愛好者所推崇(截止2018年1月9日,TensorflowGithub上已經有7193個Watch,85038個Star和41555個Fork)。
Tensorflow在短短髮布後的一年不到的時間裏,已經躍居爲綜合排名第一的深度學習框架。爲何會如此火爆呢?我我的猜想理由以下:python

  • 深度學習目前是大趨勢(因此得抓緊學習,抓住機遇)git

  • Google的技術實力太強大,開源過不少項目都很是成功(好比Android),因此跟着Google走可能不會讓咱們失望github

  • 接口豐富易用且支持多種語言(底層是C++實現的,這裏指的是客戶端調用底層API的語言),如Python、C++、Java、Goweb

  • 易於部署,包括分佈式部署算法


本機安裝Tensorflow

若是你的電腦性能還不錯,能夠考慮直接在本機安裝Tensorflow官方安裝文檔傳送門),優先考慮使用Anaconda來安裝,按照官方教程一步步執行便可。windows

安裝以後,須要在Pycharm中執行Tensorflow的代碼,咱們這裏先用簡單的輸出常量的代碼爲例(此代碼也是後文中demo1.py中的代碼):服務器

import tensorflow as tf

node1 = tf.constant(3.0, dtype=tf.float32)
node2 = tf.constant(4.0) # also tf.float32 implicitly
print(node1, node2)

sess = tf.Session()
print(sess.run([node1, node2]))


常見錯誤彙總

執行代碼的時候,你可能會遇到不少錯誤,我這裏整理了一份我在此過程當中遇到的錯誤以及對應的解決方案供你們參考:網絡

錯誤提示 解決方案
Anaconda installation is not found https://stackoverflow.com/questions/47624777/pycharm-anaconda-installation-is-not-found
ImportError: Could not find 'cudart64_80.dll'. TensorFlow requires that this DLL be installed in a directory that is named in your %PATH% environment variable. 因爲目前Tensorflow是創建在CUDA 8.0之上的,而NVIDIA官網上默認是下載CUDA最新版本的(好比目前是9.0),因此須要打開以下頁面: https://developer.nvidia.com/cuda-downloads 在頁面的最下面找到Lagacy Releases並下載CUDA 8.0
ImportError: Could not find 'cudnn64_6.dll'. TensorFlow requires that this DLL be installed in a directory that is named in your %PATH% environment variable. Note that installing cuDNN is a separate step from installing CUDA, and this DLL is often found in a different directory from the CUDA DLLs. You may install the necessary DLL by downloading cuDNN 6 from this URL: https://developer.nvidia.com/cudnn 註冊一個NVEDIA的開發者帳號,而後下載cudnn64 for cuda8 on windows。 下載下來的文件解壓以後,放到cuda目錄下對應的地方(cuda好比是在C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0)


解決了全部問題以後,若是看到如下輸出內容,就表示能正常運行Tensorflow了:

Tensor("Const:0", shape=(), dtype=float32) Tensor("Const_1:0", shape=(), dtype=float32)
2018-01-09 16:48:59.940050: I C:\tf_jenkins\home\workspace\rel-win\M\windows\PY\36\tensorflow\core\platform\cpu_feature_guard.cc:137] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX AVX2
[3.0, 4.0]

Process finished with exit code 0


使用阿里雲PAI來實驗Tensorflow


概述

由於機器學習的過程很是耗性能,若是在一個比較大的數據集上進行學習,本機CPU使用就會達到99%,並且要持續好久,這個時候就沒法乾點別的事了。很幸運,阿里雲提供了機器學習平臺PAI(Platform for Artificial Intelligence),裏面集成了不少主流的算法以及Tensorflow的不一樣版本(目前是1.0、1.一、1.2),並且目前公測階段也能夠開啓2個GPU來加快執行。

PAI的優點有:

  • 不須要本地繁瑣的安裝和解決各類安裝坑

  • 能夠調用雲服務器資源,比起本地性能更好

  • 不影響、阻塞本機其餘程序的使用,開始執行以後等着執行完畢便可

  • 算法、組件都是現成的,並且能夠用拖拽的方式編排算法,很是方便、傻瓜化,咱們惟一要作的就是提供數據和編寫核心執行腳本

  • 現成的機器學習案例以及相關文檔,能夠快速從別人的經驗中來幫助本身理解機器學習

  • 將實驗直接共享到社區

  • 公測階段免費


操做概覽

開通PAI的過程並不複雜,大體步驟以下:

  • 首先你要有一個阿里雲帳號

  • 在阿里雲後臺進入大數據(數加)->機器學習菜單

  • 建立一個項目,如: my_project_name

  • 在項目管理頁面,勾選my_project_name開啓GPU選項

  • 爲了方便上傳本地資源到PAI,建議安裝OSS-Browser工具,下載地址: https://help.aliyun.com/document_detail/61872.html?spm=5176.doc31886.2.5.qwodVb (以阿里雲後臺最新下載地址爲準),若是是少許文件上傳的話,使用web版OSS文件管理系統來管理文件也能夠(本例中咱們直接使用web版)

PS:開啓GPU選項示意圖:

目前公測階段雖然PAI自己是免費的,可是OSS是收費的,好在費用很低,僅做學習用的話,一天最多幾分錢。


詳細實驗步驟

  1. 在OSS中建立測試目錄tensorflowtest

  2. 進入tensorflowtest目錄並上傳腳本文件demo1.py(內容詳見「本機安裝Tensorflow」一節):

  3. 進入PAI後臺首頁,建立空白實驗tensorflowdemo

  4. 在空白實驗中加入讀OSS Bucket組件和TensorFlow(V1.2)組件,並選中Tensorflow節點,在右側的參數設置中,將Python代碼參數選爲咱們在步驟一、2中上傳的demo1.py文件:

  5. 點擊屏幕最下方的運行按鈕執行實驗:

本例中讀OSS Bucket組件並無什麼用,因爲PAI實驗中必需要數據源節點,所以添加空的讀OSS Bucket組件做爲數據源,所以在執行實驗的時候,阿里雲將檢測並提示當前實驗室做業實驗,將會在24小時內刪除。


查看執行結果

  1. 在實驗運行後,每一個節點右側出現一個綠色的勾,表示已正確執行完畢,此時右鍵該節點,選擇查看日誌選項:

  2. 在「查看日誌」彈出框中,滾動到中間的位置,找到 http://logview.odps.aliyun.com 的連接,如圖位置:

  3. 鼠標左鍵點擊進入以後,點擊下圖中紅色框中的detail圖標:

  4. 在彈出的Log Detail頁面上,按下圖中的一、二、3順序依次點擊:

  5. 在彈出的Logview[Stdout]頁面上,能夠最終看到腳本的實際輸出內容,與在本地IDE中的輸出一致:


結語

我已經用兩種不一樣的方式,執行了第一個基於Tensorflow的demo,這個demo目前跟深度學習還徹底搭不上邊,只是能成功運行Tensorflow而已,後續的博文中,我將進一步深刻研究。



本文在個人博客園個人我的博客上同步發佈,做者保留版權,轉載請註明來源。

相關文章
相關標籤/搜索