tf.pow(x,y)对于较大的y返回0

时间:2018-07-16 14:06:10

标签: tensorflow

我正在使用tensorflow 1.5,我注意到当我使用

val = tf.pow(2,100)

它返回0

对于100或更大的值会发生这种情况。谁能指定y可以接受的值范围,还是对y有任何限制?

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

该约束源自所使用的数据类型。

使用int32数字时,就像您只写2时默认推断的那样,您可以使用的最大值为2147483647(2 ^ 32 -1)

但是,当使用默认浮点值(float32)时,最大值为3.402823e+38,(如果您想知道为什么特别要检查这个数字,请检查IEEE-754 32-bit floating-point numbers规范)您的用例。

因此,当您尝试计算大数时,请使用浮点值。

In [2]: sess.run(tf.pow(2.0,100.0))
Out[2]: 1.2676506e+30

如果您需要更大的数字,只需使用float64数据类型。

注意:如果您尝试计算超出限制的数字,则将获得0数据类型为int的数据,而inf的数据类型为浮点数据类型(请参见tf.is_inf函数。)