tf.cast一个奇怪的错误

时间:2018-08-21 03:42:30

标签: tensorflow

当我做Deeplearning的作业时,我遇到了tf.cast一个奇怪的错误,就像这样:

test_1 = tf.cast(tf.square(2.0*300*400*64), tf.float32)
test_2 = tf.cast(tf.square(2*300*400*64), tf.float32)
test_3 = tf.cast(235929600000000, tf.float32)
sess.run([test_1, test_2, test_3])

但是,我得到的结果是这样的:

[235929600000000.0, -1543503900.0, 235929600000000.0]

我认为这可能是由float和int的位数不同引起的。有人可以给出原因吗?

1 个答案:

答案 0 :(得分:2)

tf.square(2*300*400*64)(2^13 x 3^1 x 5^4)^2然后

2^26 x 3^2 x 5^8 > 2^26 x 3^2 x 2^17
                 = 2^43 + 3^2

并且int32只能表示最大为2^32的数字。尝试改用int64或uint64:

import numpy as np
test_2 = tf.cast(tf.square(np.int64(2*300*400*64)), tf.float32)
sess.run([test_1, test_2, test_3])

这不是tf.cast中的错误。