1

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

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

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

4

1 回答 1

6

如果您使用的是hmatrix您可能正在寻找cmap

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

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

sigmoid :: Vector Double -> Vector Double
sigmoid = cmap (\z -> 1/(1+exp (-z)))
于 2018-03-25T17:23:47.893 回答