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

mah*_*thy 1 haskell vector linear-algebra vectorization hmatrix

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

sigmoid :: [Float] -> [Float]
sigmoid [] = []
sigmoid (z:zs) = ( 1/(1+exp (-z)) ):(sigmoid zs) 
Run Code Online (Sandbox Code Playgroud)

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

dup*_*ode 6

如果您正在使用hmatrix,您可能正在寻找cmap:

cmap :: (Element b, Container c e) => (e -> b) -> c e -> c b
Run Code Online (Sandbox Code Playgroud)

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

sigmoid :: Vector Double -> Vector Double
sigmoid = cmap (\z -> 1/(1+exp (-z)))
Run Code Online (Sandbox Code Playgroud)