2016년 12월 19일 월요일

[Python] Theano Shared Variable and update

from theano import function
from theano import tensor as T
from theano import shared

state = shared(0)
inc = T.iscalar()
accumulator = function([inc],state,update=[(state,state+inc)])

---------------------------------------------------------------------------
여기서 이 shared value 는 전역 변수라고 생각하면 된다.

이 변수를 사용하는 모든 함수는 이 값을 공유하게 된다.

이 값은 접근을 아래와 같이 한다.

The value can be accessed and modified by the .get_value() and .set_value() method

---------------------------------------------------------------------------
여기서 update 는 어떤 형태(form)의 페어에 적용이 된다.

즉,  state.value 를 state_inc로 바꾼다 라는 의미가 된다.


===============================================
이 코드의 의미를 살펴보자.
state 는 shared  변수
inc는 일반적인 변수이다.

accumulator 는 input 으로 inc변수 (iscalar) 를 가지고, output으로는 stsate 를 내보낸다.
그리고 이 함수는 state를 state+inc로 바꾸는 동작을 가진 함수이다.

따라서 accumulator(K) 를 실행하면,output으로 stsate를 출력후  state 를 stsate_inc로 바꾼다.


**  update 를 쓰는 이유.
1.가끔 더 속도가 빠름.
2. 언제 업데이트 되는지 추적을 편하게 하기 위해.
3. shared variable를 사용을 안하는데, 업데이트는 해야될떄

댓글 없음:

댓글 쓰기