#梯度計算
import numpy
import theano
import theano.tensor as t
from theano import pp
x=t.scalar('x')
y=x**2
gy=t.grad(y,x)
print(pp(gy))#pp()列印梯度的符號表示式
#((fill((x ** tensorconstant), tensorconstant) * tensorconstant) * (x ** (tensorconstant - tensorconstant)))
#fill((x ** 2), 1.0)指建立乙個x**2大小的矩陣,並填充1
f=theano.function([x],gy)
print(f(4))
#numpy.allclose:returns true if two arrays are element-wise equal within a tolerance.
print(numpy.allclose(f(94.2), 188.4))
#經過優化的梯度符號表示式(tensorconstant * x)
print(pp(f.maker.fgraph.outputs[0]))
更複雜的梯度計算
logistic
x=t.dmatrix('x')
s=t.sum(1/(1+t.exp(-x)))
gs=t.grad(s,x)
dlogistic=theano.function([x],gs)
print(dlogistic([[0,1],[-1,-2]]))
計算jacobian矩陣
雅可比矩陣是一階偏導數以一定方式排列成的矩陣
順序計算y中每乙個元素相對於x的偏導數
scan是theano中的乙個操作符,允許以符號表示式的方式寫入每乙個迴圈的公式裡面
# jacobian
import theano
import theano.tensor as t
x=t.dvector('x')
y=x**2
# def scan(fn,
# sequences=none,
# outputs_info=none,
# non_sequences=none,
# n_steps=none,
# truncate_gradient=-1,
# go_backwards=false,
# mode=none,
# name=none,
# profile=false,
# allow_gc=none,
# strict=false):
#fn:定義了每一次scan的操作
#sequences:定義了進行迭代操作的物件
#non_sequences:用於傳給fn的list
#lambda匿名函式,感覺有點像函式物件
#shape[i]第i維的長
j,updates=theano.scan(lambda i,y,x:t.grad(y[i],x),sequences=t.arange(y.shape[0]), non_sequences=[y,x])
f=theano.function([x],j,updates=updates)
print(f([4,4]))
hessian矩陣:
乙個自變數為向量的實值函式的二階偏導數組成的方塊矩陣
theano中輸出為scalar輸入為vector
和jacobbi的區別t.grad(cost,x)中cost是乙個scalar
#coding=utf-8
# jacobian
import theano
import theano.tensor as t
x=t.dvector('x')
y=x**2
cost=y.sum()
gy=t.grad(cost,x)
h,updates=theano.scan(lambda i,gy,x:t.grad(gy[i],x),sequences=t.arange(gy.shape[0]), non_sequences=[gy,x])
f=theano.function([x],h,updates=updates)
print(f([4,4]))
jacobian r-operation 和l-operation 沒有看懂。。。
總結
1.grad函式是以符號表達(公式)的方式工作的
2.grad是乙個巨集觀的的表示式,因為他的內部可以迭代的進行運算
3.標量只能直接被grad計算出來,陣列是迭代的對每乙個陣列元素進行計算
4.左乘和右乘的問題留個問號
五色 五味 五臟 五官與五
五色 五味 五臟 五官與五行的對應 中學唐 今天在展覽館中聽到介紹蔬菜水果食物時,講解員說到,常食五色身體好,所以我在想南韓人的文化還是可以的嘛,不愧為中國的文化的傳承。同時,在吃飯時也告訴李景雅,五色對應人體五臟,五臟對應五行。是以,作此已學習和記憶。相生 木生火 火生土 土生金 金生水 水生木 ...
五國 五寵物 五飲料 五香菸 邏輯題
size large 1981年柏林的德國邏輯思考學院 據說 有五間房屋排成一列 所有房屋的外表顏色都不一樣 所有的屋主來自不同的國家 所有的屋主都養不同的寵物 所有的屋主喝不同的飲料 所有的屋主抽不同的香菸.英國人住在紅色房屋裡 瑞典人養了乙隻狗 丹麥人喝茶 綠色的房子在白色的房子的左邊 綠色房屋...
WIFI SDIO 五問五答
1 在sd.c的檔案中定義的host max mclk是怎麼定義的?197000000對應的clk為多少hz?具體的換算公式是怎麼樣的?修改這個clk會影響哪些效能?define host max mclk 197000000 197mhz 在定義最快跑多少 假設max clk 在50mhz 但如果...