【问题标题】:Why to_categorical() in Keras uses float64 instead of float32?为什么 Keras 中的 to_categorical() 使用 float64 而不是 float32?
【发布时间】:2018-07-07 07:02:40
【问题描述】:

根据我的测试,Keras 中的to_categorical() 返回ndarrayfloat64。我想知道为什么默认不是float32,它可以被GPU处理。据我所知,GPU 无法处理float64to_categorical()documentation 没有说明返回类型应该是什么。所以,我想这可能是一个实现细节,而不是协议/接口的一部分。总而言之,两个问题:

  1. 为什么是float64 而不是float32
  2. 是否应该不依赖返回类型,因为它可能不是接口的一部分,因此可能会发生变化?如果是这种情况,则应始终在关注类型时附加 astype() 调用。

【问题讨论】:

  • 如果您将to_categorical() 的输出直接提供给模型,那么它应该不会有太大影响。此数组在fit 中使用时将始终转换为模型输出张量的数据类型。正常使用情况下,该数据类型为K.floatx(),默认为'float32'

标签: numpy machine-learning neural-network deep-learning keras


【解决方案1】:
  1. 问题出在numpy.zeros函数usedto_categorical。默认情况下,它会创建一个float64 类型的数组。

  2. 很遗憾,我建议您测试您对此类问题的解决方案,因为目前无法保证数据类型的一致性。通常 - 大多数转换器以提供的格式返回数据,因此只要您的基础数据位于 float32 中 - 它将保持 float32。但也有一些极端情况,例如to_categorical

在我的项目中,我使用docker 来保持我用于训练/推理的所有机器的一致性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-14
    • 2017-01-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多