我正在考虑更改hnn package以支持网络中每个节点的不同激活功能。
特别是,this line和this line使用特定功能(激活),但我试图扩展它以支持以下内容:
evalNet n@(Network{..}) inputs activations = do
s <- foldM (\x -> computeStepM n x (activations!!N)) state inputsV
其中N
是节点标识/索引。
目前我处于一个阶段,我的激活功能列表与网络中的节点数量相同。
我需要帮助(因为我在包源代码中丢失了),以找到从列表中应用Nth
activations
函数的方法。
编辑:我尝试StateT
使用tick
(来自文档)并使用zip
函数,每个步骤都会执行多次执行,因此最终结果会出错
答案 0 :(得分:3)
对于地图,您可能需要类似
的内容as = [(+1),(*2),(+(-3))]
xs = [4,5,6]
main = print $ zipWith ($) as xs
折叠更复杂,但可以使用相同的想法:使用相应的激活函数压缩输入并更改函数折叠以使用传入元组的值。
然而,我怀疑你真的需要/想要改变折叠。如果我没有弄错,折叠应该只传递激活功能列表。所以实际上没什么可做的。