theano 入門教程1 7

2022-08-30 20:18:14 字數 2617 閱讀 7957

1.7.1計算導數

使用theano.tensor.grad() 函式計算梯度 

>>> import theano

>>> import theano.tensor as t

>>> from theano import pp

>>> x = t.dscalar('x')

>>> y = x ** 2

>>> gy = t.grad(y, x)

>>> pp(gy)

'((fill((x ** tensorconstant), tensorconstant) * tensorconstant) * (x ** (tensorconstant - tensorconstant)))'

>>> f = theano.function([x], gy)

>>> f(4)

array(8.0)

>>> pp(f.maker.fgraph.outputs[0])

'(tensorconstant * x)'

>>> 

1.7.2計算jacobian

theano中提供了theano.gradient.jacobian()巨集計算jacobian。

下面的**闡明如何手動產生jacobain。

>>> x=

t.dvector

('x'

)>>> y=

x**2>>> j,

updates

=theano

.scan

(lambdai,

y,x:

t.grad(y

[i],x

),sequences=t

.arange(y

.shape[0

]),non_sequences=[

y,x])

>>> f=

function([x

],j,updates

=updates

)>>> f([

4,4])

array([[ 8.,  0.],

[ 0.,  8.]])

scan()函式是用來產生迴圈型別的變數。

t.arange用來產生乙個0到y.shape[0]的序列。

1.7.3 計算hessian

theano中提供了theano.gradient.hessian()巨集來計算hessian

下面的**闡明如何自己手動產生hessian

>>> x=

t.dvector

('x'

)>>> y=

x**2>>>

cost=y

.sum

()>>> gy=

t.grad

(cost,x

)>>> h,

updates

=theano

.scan

(lambdai,

gy,x:

t.grad(gy

[i],x

),sequences=t

.arange(gy

.shape[0

]),non_sequences=[

gy,x])

>>> f=

function([x

],h,updates

=updates

)>>> f([

4,4])

array([[ 2.,  0.],

[ 0.,  2.]])

1.7.4

jacobian乘以向量

1.7.4.1 右乘

類似於這種形式,

>>> w=

t.dmatrix

('w'

)>>> v=

t.dmatrix

('v'

)>>> x=

t.dvector

('x'

)>>> y=

t.dot(x,

w)>>> jv=

t.rop(y,

w,v)

>>> f=

theano

.function([w

,v,x

],jv

)>>>

f([[1,

1],[1

,1]],[[2,

2],[2

,2]],[0,

1])array([ 2.,  2.])

1.7.4.2 左乘

類似於這種形式, 

>>> w=

t.dmatrix

('w'

)>>> v=

t.dvector

('v'

)>>> x=

t.dvector

('x'

)>>> y=

t.dot(x,

w)>>> vj=

t.lop(y,

w,v)

>>> f=

theano

.function([v

,x],vj

)>>> f([

2,2],

[0,1

])array([[ 0.,  0.],

[ 2.,  2.]])

1.7.5 hessian乘以向量

來自為知筆記(wiz)

CSS入門教程

css是 cascading style sheets 的簡稱,中文翻譯為 串接樣式表 也有人翻譯為 樣式表 css用以作為網頁的排版和風格設計,在web標準建站中,對css的熟悉和使用是相當重要的乙個內容。css的作用是彌補html的不足,讓網頁的設計更為靈活。這個文章只是為您介紹css的基礎應用...

CSS入門教程

css是 cascading style sheets 的簡稱,中文翻譯為 串接樣式表 也有人翻譯為 樣式表 css用以作為網頁的排版和風格設計,在web標準建站中,對css的熟悉和使用是相當重要的乙個內容。css的作用是彌補html的不足,讓網頁的設計更為靈活。這個文章只是為您介紹css的基礎應用...

Linux入門教程

linux下有兩種使用者 1.root使用者,提示符 2.普通使用者,提示符 在 etc目錄下有乙個inittab檔案,其中有一行配置 id 3 defualt 其中,數字3就代表一啟動進入字元終端,如果改為5則代表一啟動進入x window 修改口令 passwd 退出登入 exit 關閉機器 只...