我知道如何强制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上工作?
答案 0 :(得分:4)
>>> type(numpy.sqrt(numpy.float32(2)))
<type 'numpy.float32'>
numpy.sqrt
已经做了你想要的。另一方面,math
函数始终将其输入转换为float
并返回float
,但没有选项可以更改它。对于NumPy数据类型,坚持使用NumPy操作而不是math
模块,你应该没问题。