- Python快樂編程:人工智能深度學(xué)習(xí)基礎(chǔ)
- 千鋒教育高教產(chǎn)品研發(fā)部編著
- 668字
- 2022-07-27 18:56:02
2.7.5 符號(hào)計(jì)算圖模型
Theano是將符號(hào)數(shù)學(xué)化的計(jì)算表示成計(jì)算圖。這些計(jì)算圖由apply節(jié)點(diǎn)和variable節(jié)點(diǎn)連接而成,apply節(jié)點(diǎn)與函數(shù)的應(yīng)用相連,variable節(jié)點(diǎn)與數(shù)據(jù)相連。具體操作由op實(shí)例表示,而數(shù)據(jù)類型是由type實(shí)例表示的。接下來通過一個(gè)具體的示例來理解符號(hào)計(jì)算圖的結(jié)構(gòu)。
import theano.tensor as T x = T.dmatrix('x') y = T.dmatrix('y') z = x + y

圖2.12 符號(hào)計(jì)算圖
上述代碼的邏輯非常簡單,可以看出,分別定義了兩個(gè)矩陣變量x和y,定義符號(hào)表達(dá)式z=x+y。該符號(hào)表達(dá)式轉(zhuǎn)化為對(duì)應(yīng)的符號(hào)計(jì)算圖如圖2.12所示。
在圖2.12中,箭頭表示各節(jié)點(diǎn)對(duì)所指向的Python對(duì)象的引用。變量指向apply節(jié)點(diǎn)的過程是用來表示函數(shù)通過對(duì)應(yīng)的owner域來生成自身。這些apply節(jié)點(diǎn)是通過它們的inputs和outputs域來得到它們的輸入和輸出變量的。例如,變量x和變量y的值不是來自其他計(jì)算的結(jié)果,因此這兩個(gè)變量的owner域指向了None,說明這兩個(gè)變量的值不是由某個(gè)apply節(jié)點(diǎn)生成;變量z的owner域指向了圖中的apply節(jié)點(diǎn),這說明該變量的值來自該apply節(jié)點(diǎn)。
在圖2.12中,apply節(jié)點(diǎn)的輸出指向z,而z的owner域也指回apply節(jié)點(diǎn)的,通過符號(hào)變量z的owner域獲取其apply節(jié)點(diǎn):
>>>z.owner >>>Elemwise(add,no_inplace)(x,y)
通過apply節(jié)點(diǎn)的inputs和outputs域來獲取表達(dá)式的所有輸入符號(hào)變量和所有輸出符號(hào)變量:
>>>z.owner.inputs [x,y] >>>z.owner.outputs [Elemwise{add,no_inplace}.0]
上述示例中,表達(dá)式是兩個(gè)矩陣相加,形式比較簡單,但對(duì)于復(fù)雜的表達(dá)式或函數(shù),要畫出完整的符號(hào)計(jì)算圖是非常困難的。因此,Theano支持把計(jì)算圖打印到終端或打印到外部文件。打印符號(hào)計(jì)算圖之前需要先對(duì)printing模塊進(jìn)行定義。
有兩種模式可以將計(jì)算圖打印到終端:pprint模式和debugprint模式。pprint模式的輸出結(jié)果簡潔緊湊,類似于數(shù)學(xué)表達(dá)式;debugprint模式的輸出更加詳細(xì),但相對(duì)煩瑣。以前面提到的z=x+y為例,分別用pprint模式和debugprint模式來查看z的結(jié)果,具體如下所示。
>>>theano.printing.pprint(z) '(x+y)' >>>theano.printing.debugprint(z) Elemwise{add,no_inplace}[id A]'' |x[id B] |y[id C]
- Web前端開發(fā)技術(shù):HTML、CSS、JavaScript(第3版)
- FreeSWITCH 1.6 Cookbook
- Python金融數(shù)據(jù)分析
- SEO實(shí)戰(zhàn)密碼
- Python Data Analysis(Second Edition)
- Python完全自學(xué)教程
- WordPress 4.0 Site Blueprints(Second Edition)
- Python項(xiàng)目實(shí)戰(zhàn)從入門到精通
- R用戶Python學(xué)習(xí)指南:數(shù)據(jù)科學(xué)方法
- Learning Docker Networking
- 開源項(xiàng)目成功之道
- Kubernetes進(jìn)階實(shí)戰(zhàn)
- 人工智能算法(卷1):基礎(chǔ)算法
- Django 5企業(yè)級(jí)Web應(yīng)用開發(fā)實(shí)戰(zhàn)(視頻教學(xué)版)
- Vue.js 3應(yīng)用開發(fā)與核心源碼解析