我需要以有效的方式在Haskell中对向量的元素应用函数,这意味着我不是在寻找这样的东西:
sigmoid :: [Float] -> [Float]
sigmoid [] = []
sigmoid (z:zs) = ( 1/(1+exp (-z)) ):(sigmoid zs)
更具体地说,使用Haskell在hmatrix中是否有exp, log, ... etc
元素方向向量操作,类似于使用Python的numpy中的对应方式?如果我不使用矢量处理功能,我的代码运行速度非常慢。
答案 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)))