我正在考虑更改 hnn package支持网络中每个节点的不同激活功能。
特别是,this line和 this line使用特定的功能(激活),但我试图扩展它以支持类似的东西:
evalNet n@(Network{..}) inputs activations = do
s <- foldM (\x -> computeStepM n x (activations!!N)) state inputsV
在哪里
N
是节点 ID/索引。目前我处于一个阶段,我的激活函数列表的长度与网络中的节点数量相同。
我需要帮助(因为我迷失在包源代码中)找到一种方法来申请
Nth
activations
列表中的函数。编辑:我试过
StateT
使用 tick
的方法(来自文档)并使用 zip
函数,每一步都执行多次,所以最终结果是错误的
最佳答案
对于 map ,您可能想要类似的东西
as = [(+1),(*2),(+(-3))]
xs = [4,5,6]
main = print $ zipWith ($) as xs
折叠更复杂,但可以使用相同的想法来完成:使用相应的激活函数压缩输入并更改函数折叠以使用传入元组的值。
但是,我怀疑你真的需要/想要改变折叠。如果我没记错的话,折叠应该只传递激活函数列表。所以其实没什么可做的。
关于haskell - 从列表到数据的映射函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30541807/