2015-01-29 11 views
9

Aktualizacje funkcji funkcji Theano przyjmują listę par, w której każda para określa współdzieloną zmienną symboliczną i nowe wyrażenie po obliczeniu wyników funkcji. Zastanawiam się, czy jest jakaś procedura aktualizacji. Porządek będzie ważny, jeśli nowe wyrażenie zmiennej symbolicznej będzie się nawzajem opierało, a procedura aktualizacji użyje zaktualizowanej zmiennej symbolicznej do aktualizacji innych zmiennych symbolicznych, które się na niej opierają. Dla przykłady, lista ta siła wygląda tak,Kolejność aktualizacji listy funkcji funkcji aano

[(a, b + a), (b, b+ 1)] 

Pisałem jakąś funkcję do testowania tego produktu. W rezultacie wydaje się wskazywać, że zawsze używać starego wartości w wyrażeniu (drugi termin w parze), aby zaktualizować zmienną symboliczne w pierwszym okresie, tj

a_new = b_old + a_old 
b_new = b_old + 1 

Czy to jest zdefiniowane zachowanie?

Jednak uważam realizację pędu here, Oto kody do generowania listę aktualizacji i param_update zmienne symboliczne

param_update = theano.shared(param.get_value()*0., broadcastable=param.broadcastable) 
updates += [(param, param - learning_rate*param_update), 
(param_update, momentum * param_update + (1. - momentum)*T.grad(cost, param)) 

Następnie w pierwszej iteracji, param nie będą aktualizowane, ponieważ param_updates są wszystkie zero. W moim rozumieniu parametr param_update powinien zostać najpierw zaktualizowany, a następnie wykorzystany do aktualizacji parametrów.

Odpowiedz

7

Do aktualizacji zawsze używana jest poprzednia wartość (wartość przed wywołaniem funkcji Theano). Więc znalazłeś właściwą rzecz.

Dla rozpędu, myślę, że to normalne, że jest opóźnienie.

Powiązane problemy