使用hmatrix(带矢量化)应用元素数学函数

时间:2018-03-25 16:54:39

标签: haskell vector vectorization linear-algebra hmatrix

我需要以有效的方式在Haskell中对向量的元素应用函数,这意味着我不是在寻找这样的东西:

sigmoid :: [Float] -> [Float]
sigmoid [] = []
sigmoid (z:zs) = ( 1/(1+exp (-z)) ):(sigmoid zs) 

更具体地说,使用Haskell在hmatrix中是否有exp, log, ... etc元素方向向量操作,类似于使用Python的numpy中的对应方式?如果我不使用矢量处理功能,我的代码运行速度非常慢。

1 个答案:

答案 0 :(得分:6)

如果您使用 hmatrix you are probably looking for cmap

cmap :: (Element b, Container c e) => (e -> b) -> c e -> c b
     

fmap类似(由于Element类约束,无法实现实例Functor)

sigmoid :: Vector Double -> Vector Double
sigmoid = cmap (\z -> 1/(1+exp (-z)))