如何在 Theano 中计算阶乘

How to calculate factorial 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)

Internet 上有用的信息很少。我发现的东西 http://matthewrocklin.com/blog//work/2013/08/14/SymPy-Theano-part-4 它告诉我它属于 "the future work",这意味着这个问题没有解决方案。 这怎么可能?我的意思是在你的 theano 项目中没有人需要计算阶乘吗? 我在设计具有泊松条件可能性的 RBM 时遇到了这个问题,它需要计算能量函数中可见单位的阶乘。

我找到了我们使用伽马函数解决阶乘问题的答案。 :( 不好意思打扰大家了! 这是详细信息: https://groups.google.com/forum/#!msg/theano-users/ytqep8AickA/cE7QeJZxXzUJ

所以这里应该是:

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)
def factorial(x):
    y = x-1
    temp = x*y
    it = y-1
    for i in range(it):
        y -= 1
        temp = temp*y
    print temp

这是没有布尔运算符的编辑解决方案。我知道您找到了另一个答案,但这可能对您和将来的其他人有所帮助。