我正在写一些适度的性能关键代码.此代码将位于最内部循环中,计算的运行时间以小时为单位.快速计算表明,在计算的某些变体中,此代码将执行大约10 ^ 12次.
因此,函数是计算sigmoid(X),另一个计算它的导数(gradient).Sigmoid具有以下属性:对于
y = sigmoid(x),dy/dx = y(1-y)
在python for numpy中,这看起来像:
sigmoid = vectorize(lambda(x): 1.0/(1.0+exp(-x)))
grad_sigmoid = vectorize(lambda (x): sigmoid(x)*(1-sigmoid(x)))
Run Code Online (Sandbox Code Playgroud)
可以看出,这两个函数都是纯粹的(没有副作用),因此它们是备忘的理想候选者,至少在短期内,我有一些担心缓存每次调用sigmoid所做的:存储10 ^ 12个浮点数将需要几TB的RAM.
有没有一种优化方法?
python会不会认为这些是纯函数并为我缓存它们?
我什么都不担心?