解讀Win10如何配置人工智慧學習平台Tensorflow

目錄:

  1. Tensorflow在Windows10的安裝

  2. Tensorflow,那麼什麼是Tensor?

  3. 為什麼Tensorflow那麼受歡迎?

  4. CNTK分析。

  5. Reference

Tensorflow在Windows10的安裝

在nWindows玩了很久的Tensorflow,但由於某些不可抗因素,硬是格式化了Windows。格式化完畢後立馬裝上Anaconda3,結果就在n一個大坑裡默默流眼淚——Tensorflow不支持最新的Python3.6。pip的效率是真的不算高,於是在下載都能失敗好幾次的情況下,我硬是被n卡了半個多月。這篇教程算是給整個Tensorflow的Win平台填上最新的坑。(近乎所有的教程都是在Python3.6發布之前寫的)

首先下載Anaconda3

注意,Tensorflow在Win環境下只支持Python3

同時,Anaconda3的下載不能下最新版,也就是只支持64位Python3.5。

而後就是經典的:

pip install tensorflow #如果你用CPU的話;

pip install tensorflow-gpu#如果你用GPU加速的話

這也是一般的套路告訴你的。不過其實完全可以直接去pypl的資源上直接迅雷啊什麼的下下來,比較快、省時間。而後打開cmd,pip install 直接拖入你的文件到cmd,而後麻溜回車。

你以為就這麼天真的:

import tensorflow as tfprint(TensorFlow version: {0}.format(tf.__version__))hello = tf.constant(Hello, TensorFlow!)sess = tf.Session()print(sess.run(hello))n

你就會得到:

來自tensorflow的嘲諷。

在Google中沉浮數日,發現了大佬的解決方案:

pip install --upgrade http://ci.tensorflow.org/view/Nightly/job/nightly-win/85/DEVICE=cpu,OS=windows/artifact/cmake_build/tf_python/dist/tensorflow-1.0.0rc2-cp35-cp35m-win_amd64.whln

安裝完畢之後,可以通過。

在這裡,問過Tensorflow的作者之一——Adriano Carmezim

得到的回答是醬紫的:

>Apparently this issue is fixed at HEAD but didnt make it to the release build.

也就是說,這是作者的坑。。。忽略就好。。。

Tensorflow,那麼什麼是Tensor?

tensor的對應到中文的解釋是張量。n為什麼要講tensor,主要就是鼎鼎大名的keras默認使用Tensorflow作為後端來進行張量的操作。而且tensor這個概念屬於一種底層概n念,如果一個做Deep Learning的人沒有辦法理解tensor,那麼其使用Deep Learning的技巧和創新性也十分有限。

張量這個概念比較複雜,tensor可以理解成一種多維數組,張量可以看作是向量、矩陣的自然推廣,表示廣泛的數據類型。

複雜點並不是在計算機意義上的多維數組表示方法,往往比喻有降低複雜性的作用。

零階張量是普通的數,是張量的最底層的存在,也是最容易理解的一個部分。

一階張量是向量,是數的有序的組合的結果。

張量的核心便在於——組合。

同樣的,將一階張量再進行有序組合,得到二階張量。線性代數告訴我們一個矩陣可以表示為n個列向量的和,相比大家能夠猜到二階張量可以對應到我們已經理解的矩陣。

如此,不斷的迭代加深。

由於可以迭代到很高層,在高層以上,我們就不費心思研究Tensor在我們的認知中的對應關係。研究物理的前輩們很早就意識到向量和張量作為實體具有物理上的意義的,它超越了它們的分量所被表述的(經常是任意的)坐標系。

其實張量的理解,理解成一種不斷組合不斷升級並且沒有天花板的高級數據類型就可以了。

比較像人話的,是無分量方法。它把張量首先視為抽象對象,表達了多線性概念的某種確定類型。操作張量的規則作為從線性代數到多重線性代數的推廣出現。其方式是更現代的無分量向量方法在基於分量的方法用於給出向量概念的基本引例之後就取代了傳統的基於分量的方法。

為什麼Tensorflow那麼受歡迎?

TensorFlown是相對高階的機器學習庫,用戶可以方便地用它設計神經網路結構,而不必為了追求高效率的實現親自寫C++或CUDA18代碼。在Tensorflow上可n以很麻溜的跑自己的模型而不用擔心自己的Neural nNetwork的細節部分。而Tensorflow作為神級框架Keras的默認back-end以及Google帥氣的號稱秒世界的Edward庫,無n不體現Tensorflow目前的領軍地位。

要n說做DL的人最火大什麼,無非就是各種細節上的糾結和各種求導,這個Theano做的也不錯。不過使用Python時有一個影響效率的問題是,每一個nmini-batch要從Python中feed到網路中,這個過程在mini-batch的數據量很小或者運算時間很短時,可能會帶來影響比較大的延n遲。

但是在這裡說一下Theano的一個壞話:

配置真的很煩!編譯真的很慢!

編譯需要MinGW支持,MinGW據說在國內經常翻車。對於新人來說,一個import theano 就弄出一大堆C/C++代碼,不免被震撼到。而後又要做許多的改造才能讓theano 俯首稱臣,這個自學軌跡不要太崎嶇。

TensorFlow在定義新網路結構時,Theano通常需要長時間的編譯,因此嘗試新模型需要比較大的代價,而TensorFlow完全沒有這個問題。

Tensorflow的教程真的是一搜一大把,在youtube上一搜,各種應用和教程五花八門,並且質量還普遍不低——畢竟玩DL的人不是學界大牛就是Keep Learning的典範。

內n置的TF.Learn和TF.Slim等上層組件可以幫助快速地設計新網路,並且兼容Scikit-learn nestimator介面,可以方便地實現evaluate、grid search、cross nvalidation。並且據某老司機表示:只要可以將計算表示成計算圖的形式,就可以使用TensorFlow。這就意味著,Tensorflow打破n了Deep nLearning這個概念框架的限制,在更多的領域也有自己的應用,可以寫內層循環代碼控制計算圖分支的計算。TensorFlow也可以將計算圖中的各n個節點分配到不同的設備執行,充分利用硬體資源。

最值得小白們關注的就是——帥!

Tensorflown的TensorBoard,將網路結構和訓練過程進行可視化,經常為了等編譯,然後去沖一杯咖啡,路上碰上老闆還是同學什麼的,侃大山侃完,回來——還沒n做好。然鵝這個時候早已忘記了自己做到哪一步了,就一臉懵逼的看著電腦,或者一臉懊悔的看著自己手賤戳了鍵盤的某個鍵。

TensorBoardn是TensorFlow的一組Web應用,用來監控TensorFlow運行過程,或可視化Computation nGraph。TensorBoard目前支持5種可視化:標量(scalars)、圖片(images)、音頻(audio)、直方圖n(histograms)和計算圖(Computation Graph)。TensorBoard的Events nDashboard可以用來持續地監控運行時的關鍵指標,比如loss、學習速率(learning nrate)或是驗證集上的準確率(accuracy);Image nDashboard則可以展示訓練過程中用戶設定保存的圖片,比如某個訓練中間結果用Matplotlib等繪製(plot)出來的圖片;Graph nExplorer則可以完全展示一個TensorFlow的計算圖,並且支持縮放拖曳和查看節點屬性。

CNTK分析

CNTK是MSRA開源的深度學習框架。在語音識別領域的使用尤其廣泛。CNTK設計是性能導向的,從各種成績上來看是非常的卓越——對,比Tensorflow厲害!

CNTK這個框架也很尷尬的和Tensorflow一樣,對Python的支持又是只支持Python3.5

但是CNTK有個非常非常非常尷尬的一個局面:

真的!真的!很複雜!

並且沒有Keras這樣的神級輔助助推。

安裝方法也是:

pip install https://cntk.ai/PythonWheel/CPU-Only/cntk-2.0.beta12.0-cp35-cp35m-win_amd64.whln

感興趣的、想研究CNTK的筒子們可以直接爬下來。

性能是真的比Tensorflow高,同時你能用CNTK弄好,也代表了你的實力,畢竟CNTK的的確確的比Tensorflow更複雜一點,但是還是可以接受的。

Reference

  1. MNIST數據

  2. Kears文檔

  3. CNTK PythonAPI

  4. CNTK Python配置

大家好,

我是社區娘阿喵醬,

么么噠(づ ̄ 3 ̄)づ

更多精(dou)彩(bi)內容請關注

微信公眾號:Python中文社區

Python中文開發者的精神家園

會員登記:t.cn/RJMioxD

申請成為專欄作者:Python中文社區專欄作者申請表

社區維基:python-chinese.github.io

GitHub組織:github.com/PyCN

申請加入PyCN GitHub組織:t.cn/Rir91Y4

郵箱:pythonpost@163.com

-----------------------------------------

本文作者:那隻貓,劍橋大學在讀,Python中文社區專欄作者。

未經授權,禁止轉載,否則將追究法律責任。

-----------------------------------------

推薦閱讀:

TAG:Python | 人工智能 | 互联网 |