theano學習之Shared變數

2021-09-02 01:57:02 字數 1696 閱讀 7804

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...