在tf.layers中使用float64

时间:2018-05-29 10:07:20

标签: python-3.x tensorflow floating-point

我知道我可以使用dtype=tf.<DTYPE>参数设置占位符和张量的数据类型。

有没有办法明确强制tf.layers内的权重(比如tf.layers.conv2d)为float64,或者图层的权重是否始终采用其输入的确切数据类型?

我正在尝试进行以下培训设置

  1. 输入:float32,权重:float32
  2. 输入:float32,权重:float64
  3. 输入:float64,权重:float32
  4. 输入:float64,权重:float64
  5. 并且想知道上述组合是否可行,以及如何明确防止TensorFlow更改其中一种数据类型以匹配其他数据类型

1 个答案:

答案 0 :(得分:1)

我认为你不能有效地做到这一点。大多数操作(例如tf.matmul)要求其操作数具有相同的类型。因此,只要您希望以此精度进行计算,您最终会将tf.float32向上转换为tf.float64

从计算的角度来看,考虑到FP64操作的显卡要比FP32少得多。例如,P5000,P6000或GTX 1080显卡仅比FP32具有1/32 FP64内核。比率为1/2的Titan V是你能得到的最好的之一。

最后,特别是在深度学习中,计算的精确度从未成为问题。实际上,将 noise 添加到计算中(主要是通过随机梯度下降)是大多数人认为使学习成功的原因,实际上可以用half-precision floating points成功训练模型。