numpy 如何加速 tanh?

numpy how to speed up tanh?

numpy tanh 似乎比它的 pytorch 等效项慢得多:

import torch
import numpy as np

data=np.random.randn(128,64,32).astype(np.float32)
%timeit torch.tanh(torch.tensor(data))
%timeit np.tanh(data)
820 µs ± 24.6 µs per loop (mean ± std. dev. of 7 runs, 1,000 loops each)
3.89 ms ± 95.4 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

有没有办法在 numpy 中加速 tanh?谢谢!

您可以尝试使用 numexpr 如下:

pip install numexpr

然后:

import numexpr as ne
import numpy as np

data=np.random.randn(128,64,32).astype(np.float32)

resne = ne.evaluate("tanh(data)")
resnp = np.tanh(data)

然后勾选全部关闭:

In [16]: np.allclose(resne,resnp)
Out[16]: True

并检查时间:

In [14]: %timeit res = ne.evaluate("tanh(data)")
311 µs ± 1.26 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

In [15]: %timeit np.tanh(data)
1.85 ms ± 7.43 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)