How to calculate factorial in tensorflow?

Question:

I am new to tensorflow, I am trying to find a function that calculates the n!.
I saw that one can use the gamma function, which was possible with theano, but did not work for tensorflow.

factorial = theano.tensor.gamma(v)

I am using a for loop to multiply number from n to 1, but I assume there is an easier and faster way. I saw functions related to gamma distribution, but couldn’t figure out how to calculate the factorial. Would appreciate if one can point me to some documentation.

Here is the way I do it now

import tensorflow as tf

factorial = tf.Variable(1, "factorial")
recursion = tf.Variable(1, "recursion")

# calculate factorial
mult = tf.multiply(recursion, factorial)
assign_fact = tf.assign(factorial, mult)

init = tf.global_variables_initializer()

with tf.Session() as sess:
    sess.run(init) 
    for i in range(2,10):
        counter = tf.assign(recursion, tf.constant(i))
        sess.run(counter)
        sess.run(assign_fact)

        print(i,"factorial is", sess.run(factorial))

    sess.close()

Output is

2 factorial is 2
3 factorial is 6
4 factorial is 24
5 factorial is 120
6 factorial is 720
7 factorial is 5040
8 factorial is 40320
9 factorial is 362880
Asked By: AintheT

||

Answers:

Try this: tf.exp(tf.lgamma(x + 1)).

tf.lgamma computes the log of the absolute value of Gamma(x) element-wise, so the exponent will give you the raw Gamma(x) value:

>>> sess.run(tf.exp(tf.lgamma(5.0)))
24.0
Answered By: Maxim

Try this:

tf.math.reduce_prod(tf.range(1,x+1))
Categories: questions Tags: , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.