有人在整数和无符号整数之间出现tf.cast
的奇怪行为吗?我运行以下示例(在https://colab.research.google.com
上):
import tensorflow as tf
c = tf.constant([5, 6, 7, 8, 9, 10], dtype=tf.int32)
x = tf.cast(c, dtype=tf.uint32)
with tf.Session() as sess:
x_raw = sess.run(x)
print(x_raw.dtype)
print(x_raw)
print(tf.__version__)
并得到结果:
uint32
[0 0 0 0 0 0]
1.14.0-rc1
我是否以错误的方式使用了演员表?还是在TF中进行类型转换有一些错误?
------------------更新------------------
某些人可能已经运行了上面的代码并获得了正确的结果。实际上,当我只运行一次(在笔记本单元中)时,我也得到了正确的信息,但是如果再次运行该单元,这会让您感到惊讶。重新创建事件的更好方法可能是运行以下命令:
import tensorflow as tf
c = tf.constant([5, 6, 7, 8, 9, 10], dtype=tf.int32)
d = tf.constant([5, 6, 7, 8, 9, 10], dtype=tf.int32)
x = tf.cast(c, dtype=tf.uint32)
y = tf.cast(c, dtype=tf.uint32)
with tf.Session() as sess:
x_raw, y_raw = sess.run([x, y])
print(x_raw.dtype, y_raw.dtype)
print(x_raw)
print(y_raw)
print(tf.__version__)
这样可以保证我的情况下出错。似乎在TF运行时中确实发生了一些恶臭...