theano tutorial 五 計算偏導數

2021-07-11 07:01:56 字數 2634 閱讀 7560

#梯度計算

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 但如果...