np.float64和tf.float64之间的区别是什么?

时间:2017-12-04 09:54:09

标签: numpy tensorflow

使用TensorFlow并使用NumPy中的文件加载方法时,似乎可以将所有内容指定为双精度:

np.loadtxt(..., dtype=np.float64)
tf.placeholder(tf.float64...)
tf.Variable(..., dtype=tf.float64...)

NumPy和TensorFlow具有单独的数据类型值。

如果您说np.loadtxt(..., dtype=tf.float64)它失败并显示错误消息。好的,NP是​​在TF之前编写的,因此它不了解TF数据类型值。

另一方面,如果你说tf.placeholder(np.float64...),它似乎工作正常。嗯?好吧,TF是在NP之后编写的,也许它被编程为理解NP数据类型值。但是,为什么它首先有自己独立的数据类型值而不是仅仅使用NP?

就TF而言,两者之间的区别是什么?可以在任何地方使用np.float64,还是会导致问题? (我问的原因是,我想在程序的开头设置一个参数,你可以通过改变一行在单精度和双精度之间切换,如果你确实可以使用{{{} 1}}无处不在。)

1 个答案:

答案 0 :(得分:2)

NumPy的dtype和TensorFlow的DType实际上是不同的东西(基本上,TensorFlow的DType只是内部enum的值,而NumPy's dtypes are actual objects。)因此,NumPy不了解TensorFlow DType。虽然有兼容的对。您可以通过其属性is_numpy_compatible了解您的DType是否与NumPy兼容。 TensorFlow接受NumPy dtype,因为他们通过as_dtype方法清除初始化方法中的dtype参数输入,该方法也接受NumPy dtype,将它们转换为正确的TensorFlow { {1}}值。

所以,长话短说:你基本上可以在任何地方传递DTypenp.float64,TensorFlow会妥善处理这个问题。