使用Tensorflow计算数量百分比

时间:2019-02-22 05:54:17

标签: python tensorflow

我已经尝试过:

>>> import tensorflow as tf
>>> mul = tf.multiply(50,100)
>>> div = tf.divide(mul,50)
>>> mul
<tf.Tensor 'Mul_3:0' shape=() dtype=int32>
>>> div
<tf.Tensor 'truediv_2:0' shape=() dtype=float64>
>>> import tensorflow as tf
>>> x=50
>>> mul = tf.multiply(x,100)
>>> div = tf.divide(mul,50)
>>> mul
<tf.Tensor 'Mul_4:0' shape=() dtype=int32>
>>> div
<tf.Tensor 'truediv_3:0' shape=() dtype=float64>

我没有看到任何数字。我想通过张量流完成百分比。
请让我知道我在这里想念的东西。即使我尝试评估,也会遇到基于会话的错误。我确实需要建立会话,但不知道如何在内部调用它。
如果我错过了什么,请告诉我。

2 个答案:

答案 0 :(得分:6)

在打印语句中,

<tf.Tensor 'Mul_4:0' shape=() dtype=int32>

以及其他此类陈述。这是因为Python正在打印出Tensor对象,而不是它们的值。 有两种解决方法。

  1. 启用急切执行。

    import tensorflow as tf
    tf.enable_eager_execution()
    

这将启用eager模式,您将获得张量的值而不是Tensor对象。这会在张量被声明后立即初始化(并因此急切)。

  1. 使用tf.Session() 一个tf.Session()对象运行并评估图中的张量。它以图形模式而不是急切模式运行。

    with tf.Session as session:
        print( session.run( div ) )
    

答案 1 :(得分:2)

尝试此操作肯定会有所帮助:

>>> import tensorflow as tf
>>> a = tf.placeholder(tf.float32)
>>> b = tf.placeholder(tf.float32)
>>> sess = tf.Session()
>>> percentage = tf.divide(tf.multiply(a,100),b)
>>> sess.run(tf.global_variables_initializer())
>>> sess.run(percentage,feed_dict={a:4,b:20})
20.0
>>> sess.run(percentage,feed_dict={a:50,b:50})
100.0
>>> sess.close()

您可以参考简单的示例:
https://stackoverflow.com/a/39747526/4948889
希望这会有所帮助。