与单精度计算相比,双精度计算明显更慢或更昂贵。例如,在双打上表现良好的 NVidia Tesla 比普通 GPU 贵得多。
同时,我不知道真正需要双精度的机器学习案例。目前我认为模型需要 64 位浮点数,以防它过度拟合。换句话说,只有泛化能力差的“坏”模型才需要双精度数。
与单精度计算相比,双精度计算明显更慢或更昂贵。例如,在双打上表现良好的 NVidia Tesla 比普通 GPU 贵得多。
同时,我不知道真正需要双精度的机器学习案例。目前我认为模型需要 64 位浮点数,以防它过度拟合。换句话说,只有泛化能力差的“坏”模型才需要双精度数。
我不是机器学习方面的专家,但我可以概述相关的考虑因素。
机器学习中的数值计算通常是线性代数——求解线性系统或线性最小二乘。对于这两种类型的问题,都有众所周知的后向稳定方法,所以我假设您使用的是后向稳定算法。那么你应该期望一个大约为 的错误,其中是问题的条件数,是单位舍入。
对于线性系统,你有的条件数。对于最小二乘问题,条件数可以落在范围内的任何位置;详情参见 Trefethen & Bau 的文本。
因此对于线性系统,只要远小于 ,单精度就足够了。对于最小二乘法,当时,您可能已经遇到了麻烦。对于大型数据集,这些不是很大的条件数。因此,您可能需要双精度似乎是合理的。
我认为你是对的,通常不需要双精度。
作为代理,Apple 的 Metal 框架根本不支持 double,它被宣传为具有 Apple 提供的机器学习功能的计算框架。
关于金属数据类型的信息:https ://developer.apple.com/metal/Metal-Shading-Language-Specification.pdf