shared 變數
,意思是這些變數可以在運算過程中,不停地進行交換和更新值。 在定義weights 和 bias
的情況下,會需要用到這樣的變數。
import numpy as np
import theano
import theano.tensor as t
#---------------------------shared是用來存放變數的,會不斷更新數值---------------------#
state = theano.shared(np.array(0,dtype=np.float64),'state')#用np.array給state賦初值,名字為state
inc = t.scalar('inc',dtype=state.dtype)#定義乙個容器,名字為inc,值的型別為state型別,不弄用np.float64
accumulator = theano.function([inc],state,updates=[(state,state+inc)])#定義乙個函式,傳過來的數為inc的值,結果為state,更新方法為state加inc
#--------輸出不能使用print(state),而要用state.get_value()來獲取state中個值---------#
print(state.get_value())#不傳值的話state裡面的值為賦初值裡的值
accumulator(1)#把1傳到累加器裡面去
print(state.get_value())#state的值更新了,變為1
accumulator(10)#把10傳過去
print(state.get_value())#state的值更新了,變為11
#---------------可以用set_value來改變state裡的值----------------------------------------#
state.set_value(-1)
accumulator(3)
print(state.get_value())#輸出值為2
#-------------------------------------臨時使用-------------------------------------------#
#有時只是想暫時使用 shared 變數,並不需要把它更新: 這時我們可以定義乙個 a 來臨時代替 state,注意定義 a 的時候也要統一dtype
tmp_func = state*2 + inc
a = t.scalar(dtype=state.dtype)
skip_shared = theano.function([inc,a],tmp_func,givens=[(state,a)])#忽略掉 shared 變數自己的運算,輸入值是 [inc,a],相當於把 a 代入 state,輸出是 tmp_func,givens 就是想把什麼替換成什麼。 這樣的話,在呼叫 skip_shared 函式後,state 並沒有被改變。
print(skip_shared(2,3))#借用了一下share變數state
print(state.get_value())#原始值還是2
結果:
theano學習筆記
定義函式import theano.tensor as t from theano import function,pp 標量 x t.dscalar x 向量 x t.vector a 矩陣 x t.dmatrix x y t.dscalar y z x y f function x,y z 函式...
7 theano 安裝 學習theano的筆記
之前寫過有關theano在macos上的安裝部署,昨天又在windows上安裝了一版,發現還有theano.test 這種玩法,不知道有多少人的機器是全部通過的,6000多個測試程式,不發生問題的概率估計是不大。我自己的機器上現在還有7個failure,不打算找問題了,先用著再說。天天搞深度學習的,...
theano學習之分類學習
from future import print function import numpy as np import theano import theano.tensor as t 該函式功能用來計算準確率 def compute accuracy y target,y predict corr...