2016-03-24 6 views
0

Hier ist ein einfaches Beispiel.So berechnen Sie Fakultät in Theano

import theano 
v = theano.tensor.scalar("variable") 
factorial = ? 
# Calculate factorial of v , like numpy.math.factorial(v), but it didn't work, 
# Actually it should be a integer as a parameter of numpy.math.factorial function 
result = theano.function([v], factorial) 

Es gibt einige nützliche Informationen im Internet. Etwas, das ich wie http://matthewrocklin.com/blog//work/2013/08/14/SymPy-Theano-part-4 fand, sagte mir, dass es "der zukünftigen Arbeit" gehörte, was bedeutet, dass es keine Lösung für dieses Problem gibt. Wie könnte das möglich sein? Ich meine, gibt es keinen Körper, der in Ihrem Theano-Projekt faktoriell berechnet werden muss? Ich hatte dieses Problem, als ich einen RBM mit Poisson bedingter Möglichkeit entwarf, der faktorielle sichtbare Einheiten in der Energiefunktion berechnen muss.

Antwort

0

Ich habe die Antwort gefunden, dass wir Gamma-Funktion verwenden, um das faktorielle Problem zu lösen. ! :(Sorry für alle die Mühe Hier ist das Detail: https://groups.google.com/forum/#!msg/theano-users/ytqep8AickA/cE7QeJZxXzUJ

hier so sein sollte.

import theano 
v = theano.tensor.scalar("variable") 
factorial = theano.tensor.gamma(v) 
# Calculate factorial of v , like numpy.math.factorial(v), but it didn't work, 
# Actually it should be a integer as a parameter of numpy.math.factorial function 
result = theano.function([v], factorial) 
+0

Tatsächlich ist Fakultät (v) Gamma (v + 1). –

+0

Ja, genau! Danke für die Korrektur. –

0
def factorial(x): 
    y = x-1 
    temp = x*y 
    it = y-1 
    for i in range(it): 
     y -= 1 
     temp = temp*y 
    print temp 

Hier ist die bearbeitete Lösung ohne die Booleschen Operatoren Ich weiß, Sie eine andere gefunden Antwort, aber das kann Ihnen und anderen in der Zukunft hilfreich sein.

+0

Theano Variable wie Skalar unterstützt keine boolesche Operation, wie y in Ihrem Code. Ich habe die Lösung gefunden danke. –

+0

Danke Typ! Ich habe es wirklich geschätzt. –