【发布时间】:2017-04-25 23:34:34
【问题描述】:
我正在尝试在 Haskell 中实现某种神经网络。该网络具有时间感知能力,因此时间步长是其功能的重要组成部分。在不需要太多细节的情况下,我随着时间的推移运行网络的一般实现是:
foldM stepNetwork initialNetwork (zip images labels)
这个想法是,每个时间步都会生成一个新的网络,该网络又学习了一个图像/标签对。然而,这种方法会导致一些粗略的数据结构试图记住以前网络中的东西。这是我的隐藏层结构:
data HiddenLayer = HiddenLayer { hResponse :: Response
, hOldResponse :: Response
, hNeurons :: [YNeuron]
} deriving Show
而我目前的 stepNetwork 功能类似于:
stepNetwork (Network x y z) = Network newX newY newZ
where
newX = stepLayer x (hOldResponse y)
newZ = stepLayer z (hOldResponse y)
newY = stepLayer y (currentResponse newX) (currentReponse newZ)
我不想在网络中携带旧响应。这是网络中各层之间的关系,其中X、Y、Z为三层。
由于它对时间敏感,因此 FRP 似乎是模拟这种关系的好方法,但我只是不确定如何在 FRP 范式中对此进行建模。有什么建议吗?
【问题讨论】:
-
我不明白你为什么写
newY = stepLayer y (currentResponse newX) (currentReponse newZ),但你的图表上写的是newY = stepLayer y (hOldResponse x) (hOldResponse z)?
标签: haskell functional-programming neural-network frp