重新访问强制python数学函数在float32上运行

时间:2014-06-15 02:04:34

标签: math numpy theano

我知道如何强制python操作在float32上工作: How to force python float operation on float32 rather than float64

但是没有关于强制内置函数在float32上工作的Q或A. 我想问一下强制内置数学或numpy函数如math.sqrt或numpy.sqrt如何在float32上工作。仅供参考,我暂不对此问题发表评论。

在theano中,我们可以轻松配置函数,例如,sqrt可以在float32或float64上工作,如下所示:

from theano import config
config.floatX = 'float32'
from theano import tensor as T
x = T.scalar()
a = T.sqrt(x)

from theano import function
h = function([x], a)
print h(15)

结果是:

3.87298345566

现在我试图强制math.sqrt和numpy.sqrt做同样的事情:

import math
import numpy
print math.sqrt(numpy.float32(15))

但结果似乎仍然在float64中(我确认了 结果是相同的,即3.87298334621, 如果我设置theano.config.floatX ='float64'):

3.87298334621

我很想知道如何强制math.sqrt,numpy.sqrt在float32上工作?

1 个答案:

答案 0 :(得分:4)

>>> type(numpy.sqrt(numpy.float32(2)))
<type 'numpy.float32'>

numpy.sqrt已经做了你想要的。另一方面,math函数始终将其输入转换为float并返回float,但没有选项可以更改它。对于NumPy数据类型,坚持使用NumPy操作而不是math模块,你应该没问题。