我正在使用tensorflow 1.5,我注意到当我使用
时val = tf.pow(2,100)
它返回0
。
对于100或更大的值会发生这种情况。谁能指定y可以接受的值范围,还是对y有任何限制?
非常感谢您的帮助。
答案 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函数。)