Theano 中文文檔 0.9 - 3. Theano一覽

3. Theano一覽

譯者:Python 文檔協(xié)作翻譯小組,原文:Theano at a Glance引矩。

本文以 CC BY-NC-SA 4.0 協(xié)議發(fā)布,轉載請保留作者署名和文章出處琐谤。

Python 文檔協(xié)作翻譯小組人手緊缺进苍,有興趣的朋友可以加入我們,完全公益性質熊楼。交流群:467338606霹娄。

Theano是一個Python庫,它允許你定義鲫骗、優(yōu)化和求值數學表達式犬耻,特別是具有多維數組(numpy.ndarray)的數學表達式。對于涉及大量數據的問題执泰,使用Theano可以獲得與手工編寫的C實現不相上下的速度枕磁。它還可以通過利用最近的GPU超過CPU上的C多個數量級。

Theano將計算機代數系統(tǒng)(CAS)的各個方面與優(yōu)化編譯器的各個方面相結合术吝。它還可以為許多數學運算生成定制的C代碼计济。CAS與優(yōu)化編譯的這種組合對于復雜數學表達式重復求值并且求值速度很關鍵的任務特別有用茸苇。對于許多不同的表達式每個求值一次的情況,Theano可以最小化編譯/分析的開銷沦寂,但仍然提供諸如自動微分等符號特征学密。

Theano的編譯器對這些符號表達式應用許多不同復雜度的優(yōu)化。這些優(yōu)化包括传藏,但不限于:

  • 使用GPU進行計算
  • 恒定折疊
  • 合并相似的子圖腻暮,避免冗余計算
  • 算術簡化(例如x*y/x -> y, --x -> x
  • 在各種上下文中插入高效的BLAS操作(例如GEMM
  • 使用內存別名來避免計算
  • 使用就地操作,無論它涉不涉及到別名
  • 元素子表達式的循環(huán)融合
  • 數值穩(wěn)定性的改進(例如和)
  • 完整列表請參閱優(yōu)化

Theano是在LISA實驗室編寫的毯侦,以支持高效機器學習算法的快速開發(fā)哭靖。Theano以希臘數學家命名,她可能是畢達哥拉斯的妻子叫惊。Theano根據BSD許可證(link)發(fā)布款青。

先睹為快

這里是如何使用Theano的示例。它沒有展示Theano的許多功能霍狰,但它具體說明了Theano是什么抡草。

import theano
from theano import tensor

# declare two symbolic floating-point scalars
a = tensor.dscalar()
b = tensor.dscalar()

# create a simple expression
c = a + b

# convert the expression into a callable object that takes (a,b)
# values as input and computes a value for c
f = theano.function([a,b], c)

# bind 1.5 to 'a', 2.5 to 'b', and evaluate 'c'
assert 4.0 == f(1.5, 2.5)

Theano不是一個正常意義上的編程語言,因為你在Python中編寫一個程序來為Theano構建表達式蔗坯。在某種程度上它仍然像一個編程語言康震,因為你必須

  • 聲明變量(a,b)并給出它們的類型
  • 構建表達式來表示如何將這些變量放在一起
  • 將表達式圖編譯為函數,以便將它們用于計算宾濒。

可以把theano.function看作一個編譯器的接口腿短,它從純粹的符號圖中構建一個可調用的對象。Theano的最重要的特性之一是theano.function可以優(yōu)化圖绘梦,甚至將其中的一些或全部編譯為本機機器指令橘忱。

它做了什么,但是其它庫沒有做卸奉?

Theano是一個Python庫和優(yōu)化編譯器钝诚,用于處理和求值表達式,特別是矩陣表達式榄棵。矩陣的操作通常使用numpy包來完成凝颇,那么什么是Theano做的而Python和numpy沒有做的呢?

  • 執(zhí)行速度優(yōu)化:Theano可以使用g++nvcc將表達式圖的部分編譯成CPU或GPU指令疹鳄,它們運行起來比純Python快得多拧略。
  • 符號微分:Theano可以自動構建用于計算梯度的符號圖。
  • 穩(wěn)定性優(yōu)化:Theano可以識別[某些]數值不穩(wěn)定的表達式瘪弓,并使用更穩(wěn)定的算法計算它們垫蛆。

最接近Theano的Python包是sympy。Theano比Sympy更注重張量表達,并有更多的機制進行編譯月褥。Sympy具有更復雜的代數規(guī)則弛随,可以處理更多種類的數學運算(如序列,極限和積分)宁赤。

如果將numpyMATLABsympyMathematica進行比較,Theano是一種試圖結合兩個世界的最好的部分的東西栓票。

入門

安裝Theano

在你的系統(tǒng)上下載并安裝Theano的說明决左。

教程

開始使用Theano的基本功能。如果你是新手走贪,去這里佛猛!

API文檔

Theano提供的細節(jié)。建議先通讀教程坠狡。

可在此處找到在線文檔的PDF版本继找。

Theano的愿景

這是我們對Theano的愿景。這是給人們對Theano未來的一個期望逃沿,但我們不能承諾實現所有的婴渡。這也應該能幫助你理解Theano與其他計算工具的關系。

  • 支持張量和稀疏運算

  • 支持線性代數運算

  • 圖變換

    • 微分/高階微分
    • 'R'和'L'微分運算符
    • 速度/內存優(yōu)化
    • 數值穩(wěn)定性優(yōu)化
  • 可以使用多種編譯語言凯亮、指令集:C/C++边臼、CUDA、OpenCL假消、PTX柠并、CAL、AVX ...

  • 延遲求值

  • 循環(huán)

  • 并行執(zhí)行(SIMD富拗、多核臼予,集群上的多節(jié)點,分布式多節(jié)點)

  • 支持NumPy所有功能和SciPy的基本功能

  • 在Theano中輕松封裝庫函數

注意:短期沒有計劃支持多節(jié)點計算啃沪。

Theano愿景的狀態(tài)

以下是截至2013年12月3日(Theano版本0.6之后)的愿景狀態(tài):

  • 我們支持使用numpy.ndarray對象的張量粘拾,我們支持對它們的許多操作。
  • 我們通過使用scipy.{csc谅阿,csr半哟,bsr} _matrix對象支持稀疏類型,并支持對它們的一些操作签餐。
  • 我們已經開始實現/封裝更高級的線性代數運算寓涨。
  • 我們有許多圖變換,涵蓋上面列出的4個類別氯檐。
  • 我們可以通過更好的存儲優(yōu)化和指令選擇來改進圖轉換戒良。
    • 類似于在優(yōu)化階段的自動調整,但這不適用于只有1個的操作冠摄。
    • 使用示例:根據輸入大小確定是否應將計算移動到GPU糯崎。
    • 可能實現:允許fgraph中的Theano變量擁有超過1個所有者几缭。
  • 我們支持Python 2和Python 3。
  • 我們對float32類型的張量有一個CUDA后端沃呢。
  • 已經開始嘗試通用GPU ndarray(GPU張量)(在libgpuarray項目中啟動)
    • 將GPU后端移到Theano外部年栓。
    • 將在Windows上為GPU提供更好的支持,并在CPU上支持OpenCL后端薄霜。
  • 循環(huán)可以工作某抓,但并不是所有的相關優(yōu)化都已完成。
  • cvm鏈接器允許延遲求值。它是當前的默認鏈接器。
    • 如何讓DebugMode檢查伯铣?目前,DebugMode非延遲地檢查計算备禀。
  • CPU上的SIMD并行性來自編譯器。
  • 多核并行支持有限奈揍。如果外部BLAS實現支持它曲尸,許多點通過gemm,gemv和ger并行化打月。此外队腐,支持逐個元素的操作。請參閱Multi cores support in Theano奏篙。
  • 無多節(jié)點支持柴淘。
  • 實現大多數但不是所有NumPy的函數/別名。* https://github.com/Theano/Theano/issues/1080
  • 將現有的Python函數封裝的更簡單并寫成文檔秘通。
  • 我們知道如何從對象類型(張量为严、稀疏矩陣、dtype肺稀、broadcast 標志)分離共享變量內存存儲位置第股,但我們需要這樣做。

聯系我們

關于Theano的討論發(fā)生在theano-devtheano-users郵件列表中话原。對Theano的開發(fā)感興趣的人應該檢查前者夕吻,而后者保留給涉及最終用戶的問題。

問題繁仁、評論涉馅、贊美、批評和錯誤報告應提交到這些郵件列表黄虱。

我們歡迎各種貢獻稚矿。如果你對如何擴展Theano有任何問題,請隨時問問theano-dev郵件列表。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末晤揣,一起剝皮案震驚了整個濱河市桥爽,隨后出現的幾起案子,更是在濱河造成了極大的恐慌昧识,老刑警劉巖钠四,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異滞诺,居然都是意外死亡形导,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進店門习霹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人炫隶,你說我怎么就攤上這事淋叶。” “怎么了伪阶?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵煞檩,是天一觀的道長。 經常有香客問我栅贴,道長斟湃,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任檐薯,我火速辦了婚禮凝赛,結果婚禮上,老公的妹妹穿的比我還像新娘坛缕。我一直安慰自己墓猎,他們只是感情好,可當我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布赚楚。 她就那樣靜靜地躺著毙沾,像睡著了一般。 火紅的嫁衣襯著肌膚如雪宠页。 梳的紋絲不亂的頭發(fā)上左胞,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天,我揣著相機與錄音举户,去河邊找鬼烤宙。 笑死,一個胖子當著我的面吹牛敛摘,可吹牛的內容都是我干的门烂。 我是一名探鬼主播,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼屯远!你這毒婦竟也來了蔓姚?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤慨丐,失蹤者是張志新(化名)和其女友劉穎坡脐,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體房揭,經...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡备闲,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了捅暴。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片恬砂。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖蓬痒,靈堂內的尸體忽然破棺而出泻骤,到底是詐尸還是另有隱情,我是刑警寧澤梧奢,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布狱掂,位于F島的核電站,受9級特大地震影響亲轨,放射性物質發(fā)生泄漏趋惨。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一惦蚊、第九天 我趴在偏房一處隱蔽的房頂上張望器虾。 院中可真熱鬧,春花似錦养筒、人聲如沸曾撤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽挤悉。三九已至,卻和暖如春巫湘,著一層夾襖步出監(jiān)牢的瞬間装悲,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工尚氛, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留诀诊,地道東北人。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓阅嘶,卻偏偏與公主長得像属瓣,于是被迫代替她去往敵國和親载迄。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,979評論 2 355

推薦閱讀更多精彩內容