theano 學習筆記

shared 使用

這個方法能夠供你在多個函數中共享某個值,使用方法爲python

```python
import theato.tensor as T
from theano import function from theano import shared inc = T.iscalar('inc') state = shared(0) #用 0 初始化state f = function([inc],state,updates=[(state,state+inc)]) ff = function([inc],state,updates=[(state,state+inc)]) f(10) #輸出0 這裏輸出的值數state,由於在這裏,是先輸出state,而後更新state,所以輸出0,而後state變爲10 ff(100) #輸出10,state變爲110 ```

Param 使用

這個方式是爲函數的輸入設置默認值。對於某些函數,好比logistic函數爲11+e1,其中咱們通常寫成1去加e1,所以咱們想設置param=1,但有時我想改變他,所以咱們能夠寫成這樣dom

```python pprofix = T.dscalar('pprofix') x = T.dscalar('x') y = 1 / ( pprofix + Math.exp(-x)) logistic = function([x,Param(pprofix,efault = 1]) #調用logistic時我能夠不爲pprofix賦值 logistic(10) logistic(10,10) # 我也能夠按照下面這個方法寫,我在dscalar()中給pprofix設置了個名字,在這裏就能夠用了, # 若是想給他更名,在Param設置name值便可 logistic(10,pprofix = 10 ```

givens使用

當咱們一個公式用的變量是shared時候,我想計算這個公式,可是不想更新shared變量的值時,我就要用givens這個方法,具體使用以下函數

```python inc = T.dscalar('inc') state = shared(0) foo = T.scalar(dtype = state.dtype) fn = state**2+inc skip_share = function([inc,foo],fn,givens=[(state,foo)]) #這裏雖然修改state,但這是局部修改,至關於生成了一個局部變量,對我總體的共享變量值是不變的 ```

RandomStreams使用

如題,這個也就是產生隨機數的函數,調用起來比較麻煩,由於要遵循theano的規則,下面我展現一下spa

```python
from theano.tensor.randomstreams import RandomStreams
#傳給他種子,相似c中的srand()
srng = RandomStreams(seed=234)
#它能夠生成兩種類型的隨機數,每種類型的都要用元組傳入矩陣的row和cu
rv_n = srng.normal((2,2)) #生成的隨機數有正有負,大小也不肯定,不過比較小,最大也是個位數
rv_u = srng.uniform((2,2)) #生成的隨機數是大於0的,而且小於1的,很是規則,固然都是生成2*2的矩陣
#調用時要用function,也就是他麻煩的地方
f = function([],rv_u) #不須要參數,因此不用傳參
g = function([],rv_u,no_default_update=True) #生成一組隨機數之後,就再也不從新生隨機數,若是一直用這組隨機數的時候建議這樣寫
```

1.seed設置
seed除了能夠爲全體隨機數設置也能夠爲單個隨機數設置,方法略有不一樣scala

```python
#全局設置
RandomStreams(seed = 12233)
#局部設置比較麻煩
rvget = rv.rng.get_value(borrow = True)
rvget.seed(1212)
rv.rng.set_value(rvget,borrow=True)
``
@%28%u6DF1%u5EA6%u5B66%u4E60%29%0Athearo%u4F7F%u7528%u65B9%u6CD5%0A%3D%3D%3D%0A%23%23%23shared%20%u4F7F%u7528%0A%u8FD9%u4E2A%u65B9%u6CD5%u53EF%u4EE5%u4F9B%u4F60%u5728%u591A%u4E2A%u51FD%u6570%u4E2D%u5171%u4EAB%u67D0%u4E2A%u503C%uFF0C%u4F7F%u7528%u65B9%u6CD5%u4E3A%0A%20%20%20%20%60%60%60python%0A%20%20%20%20import%20theato.tensor%20as%20T%0A%20%20%20%20from%20theano%20import%20function%0A%20%20%20%20from%20theano%20import%20shared%0A%20%20%20%20%0A%20%20%20%20inc%20%3D%20T.iscalar%28%27inc%27%29%0A%20%20%20%20state%20%3D%20shared%280%29%20%23%u7528%200%20%u521D%u59CB%u5316state%0A%20%20%20%20f%20%3D%20function%28%5Binc%5D%2Cstate%2Cupdates%3D%5B%28state%2Cstate+inc%29%5D%29%0A%20%20%20%20ff%20%3D%20function%28%5Binc%5D%2Cstate%2Cupdates%3D%5B%28state%2Cstate+inc%29%5D%29%0A%20%20%20%20%0A%20%20%20%20f%2810%29%20%23%u8F93%u51FA0%20%20%u8FD9%u91CC%u8F93%u51FA%u7684%u503C%u6570state%2C%u56E0%u4E3A%u5728%u8FD9%u91CC%uFF0C%u662F%u5148%u8F93%u51FAstate%2C%u7136%u540E%u66F4%u65B0state%uFF0C%u56E0%u6B64%u8F93%u51FA0%uFF0C%u7136%u540Estate%u53D8%u4E3A10%0A%20%20%20%20ff%28100%29%20%23%u8F93%u51FA10%uFF0Cstate%u53D8%u4E3A110%0A%20%20%20%20%60%60%60%0A%23%23%23Param%20%u4F7F%u7528%0A%u8FD9%u4E2A%u65B9%u5F0F%u662F%u4E3A%u51FD%u6570%u7684%u8F93%u5165%u8BBE%u7F6E%u9ED8%u8BA4%u503C%u3002%u5BF9%u4E8E%u67D0%u4E9B%u51FD%u6570%uFF0C%u6BD4%u5982logistic%u51FD%u6570%u4E3A%24%24%5Cfrac%7B1%7D%7B1+e%5E%7B-1%7D%7D%24%24%2C%u5176%u4E2D%u6211%u4EEC%u4E00%u822C%u5199%u62101%u53BB%u52A0%24%24e%5E%7B-1%7D%24%24%uFF0C%u56E0%u6B64%u6211%u4EEC%u60F3%u8BBE%u7F6Eparam%3D1%2C%u4F46%u6709%u65F6%u6211%u60F3%u6539%u53D8%u4ED6%uFF0C%u56E0%u6B64%u6211%u4EEC%u53EF%u4EE5%u5199%u6210%u8FD9%u6837%0A%0A%20%20%20%20%60%60%60python%0A%20%20%20%20pprofix%20%3D%20T.dscalar%28%27pprofix%27%29%0A%20%20%20%20x%20%3D%20T.dscalar%28%27x%27%29%0A%20%20%20%20y%20%3D%201%20/%20%28%20pprofix%20+%20Math.exp%28-x%29%29%0A%20%20%20%20logistic%20%3D%20function%28%5Bx%2CParam%28pprofix%2Cefault%20%3D%201%5D%29%0A%20%20%20%20%23%u8C03%u7528logistic%u65F6%u6211%u53EF%u4EE5%u4E0D%u4E3Approfix%u8D4B%u503C%0A%20%20%20%20logistic%2810%29%0A%20%20%20%20logistic%2810%2C10%29%0A%20%20%20%20%23%20%u6211%u4E5F%u53EF%u4EE5%u6309%u7167%u4E0B%u9762%u8FD9%u4E2A%u65B9%u6CD5%u5199%uFF0C%u6211%u5728dscalar%28%29%u4E2D%u7ED9pprofix%u8BBE%u7F6E%u4E86%u4E2A%u540D%u5B57%uFF0C%u5728%u8FD9%u91CC%u5C31%u53EF%u4EE5%u7528%u4E86%uFF0C%0A%20%20%20%20%23%20%u5982%u679C%u60F3%u7ED9%u4ED6%u6539%u540D%uFF0C%u5728Param%u8BBE%u7F6Ename%u503C%u5373%u53EF%0A%20%20%20%20logistic%2810%2Cpprofix%20%3D%2010%0A%20%20%20%20%60%60%60%0A%23%23%23givens%u4F7F%u7528%0A%u5F53%u6211%u4EEC%u4E00%u4E2A%u516C%u5F0F%u7528%u7684%u53D8%u91CF%u662Fshared%u65F6%u5019%uFF0C%u6211%u60F3%u8BA1%u7B97%u8FD9%u4E2A%u516C%u5F0F%uFF0C%u4F46%u662F%u4E0D%u60F3%u66F4%u65B0shared%u53D8%u91CF%u7684%u503C%u65F6%uFF0C%u6211%u5C31%u8981%u7528givens%u8FD9%u4E2A%u65B9%u6CD5%uFF0C%u5177%u4F53%u4F7F%u7528%u5982%u4E0B%0A%0A%20%20%20%20%60%60%60python%0A%20%20%20%20inc%20%3D%20T.dscalar%28%27inc%27%29%0A%20%20%20%20state%20%3D%20shared%280%29%0A%20%20%20%20foo%20%3D%20T.scalar%28dtype%20%3D%20state.dtype%29%0A%20%20%20%20fn%20%3D%20state**2+inc%0A%20%20%20%20skip_share%20%3D%20function%28%5Binc%2Cfoo%5D%2Cfn%2Cgivens%3D%5B%28state%2Cfoo%29%5D%29%0A%20%20%20%20%23%u8FD9%u91CC%u867D%u7136%u4FEE%u6539state%uFF0C%u4F46%u8FD9%u662F%u5C40%u90E8%u4FEE%u6539%uFF0C%u76F8%u5F53%u4E8E%u751F%u6210%u4E86%u4E00%u4E2A%u5C40%u90E8%u53D8%u91CF%uFF0C%u5BF9%u6211%u6574%u4F53%u7684%u5171%u4EAB%u53D8%u91CF%u503C%u662F%u4E0D%u53D8%u7684%0A%20%20%20%20%60%60%60%0A%0A%23%23%23RandomStreams%u4F7F%u7528%0A%u5982%u9898%uFF0C%u8FD9%u4E2A%u4E5F%u5C31%u662F%u4EA7%u751F%u968F%u673A%u6570%u7684%u51FD%u6570%uFF0C%u8C03%u7528%u8D77%u6765%u6BD4%u8F83%u9EBB%u70E6%uFF0C%u56E0%u4E3A%u8981%u9075%u5FAAtheano%u7684%u89C4%u5219%uFF0C%u4E0B%u9762%u6211%u5C55%u793A%u4E00%u4E0B%0A%20%20%20%20%0A%20%20%20%20%60%60%60python%0A%20%20%20%20from%20theano.tensor.randomstreams%20import%20RandomStreams%0A%20%20%20%20%23%u4F20%u7ED9%u4ED6%u79CD%u5B50%uFF0C%u7C7B%u4F3Cc%u4E2D%u7684srand%uFF08%uFF09%0A%20%20%20%20srng%20%3D%20RandomStreams%28seed%3D234%29%0A%20%20%20%20%23%u5B83%u53EF%u4EE5%u751F%u6210%u4E24%u79CD%u7C7B%u578B%u7684%u968F%u673A%u6570%uFF0C%u6BCF%u79CD%u7C7B%u578B%u7684%u90FD%u8981%u7528%u5143%u7EC4%u4F20%u5165%u77E9%u9635%u7684row%u548Ccu%0A%20%20%20%20rv_n%20%3D%20srng.normal%28%282%2C2%29%29%20%23%u751F%u6210%u7684%u968F%u673A%u6570%u6709%u6B63%u6709%u8D1F%uFF0C%u5927%u5C0F%u4E5F%u4E0D%u786E%u5B9A%uFF0C%u4E0D%u8FC7%u6BD4%u8F83%u5C0F%uFF0C%u6700%u5927%u4E5F%u662F%u4E2A%u4F4D%u6570%0A%20%20%20%20rv_u%20%3D%20srng.uniform%28%282%2C2%29%29%20%23%u751F%u6210%u7684%u968F%u673A%u6570%u662F%u5927%u4E8E0%u7684%uFF0C%u5E76%u4E14%u5C0F%u4E8E1%u7684%uFF0C%u975E%u5E38%u89C4%u5219%uFF0C%u5F53%u7136%u90FD%u662F%u751F%u62102*2%u7684%u77E9%u9635%0A%20%20%20%20%23%u8C03%u7528%u65F6%u8981%u7528function%uFF0C%u4E5F%u5C31%u662F%u4ED6%u9EBB%u70E6%u7684%u5730%u65B9%0A%20%20%20%20f%20%3D%20function%28%5B%5D%2Crv_u%29%20%23%u4E0D%u9700%u8981%u53C2%u6570%uFF0C%u6240%u4EE5%u4E0D%u7528%u4F20%u53C2%0A%20%20%20%20g%20%3D%20function%28%5B%5D%2Crv_u%2Cno_default_update%3DTrue%29%20%23%u751F%u6210%u4E00%u7EC4%u968F%u673A%u6570%u4EE5%u540E%uFF0C%u5C31%u4E0D%u518D%u91CD%u65B0%u751F%u968F%u673A%u6570%uFF0C%u5982%u679C%u4E00%u76F4%u7528%u8FD9%u7EC4%u968F%u673A%u6570%u7684%u65F6%u5019%u5EFA%u8BAE%u8FD9%u6837%u5199%0A%20%20%20%20%60%60%60%0A%0A%0A1.seed%u8BBE%u7F6E%0Aseed%u9664%u4E86%u53EF%u4EE5%u4E3A%u5168%u4F53%u968F%u673A%u6570%u8BBE%u7F6E%u4E5F%u53EF%u4EE5%u4E3A%u5355%u4E2A%u968F%u673A%u6570%u8BBE%u7F6E%2C%u65B9%u6CD5%u7565%u6709%u4E0D%u540C%0A%0A%20%20%20%20%60%60%60python%0A%20%20%20%20%23%u5168%u5C40%u8BBE%u7F6E%0A%20%20%20%20RandomStreams%28seed%20%3D%2012233%29%0A%20%20%20%20%23%u5C40%u90E8%u8BBE%u7F6E%u6BD4%u8F83%u9EBB%u70E6%0A%20%20%20%20rvget%20%3D%20rv.rng.get_value%28borrow%20%3D%20True%29%0A%20%20%20%20rvget.seed%281212%29%0A%20%20%20%20rv.rng.set_value%28rvget%2Cborrow%3DTrue%29%0A%20%20%20%20%60%60%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A
相關文章
相關標籤/搜索