Ben evrimsel sinir ağları ile araştırıyorum ve HNN kullanıyorum. Benim ilk sorum şu ki, Haskell'de herhangi bir evrimsel algoritma çerçevesi var mı? nasıl Haskell fmap ile rastgele jeneratörü kullanan işlevini kullanmak için?
Şu anda genel bir şekilde nöral ağın ağırlıkları mutasyona için bir yol bulmak mücadele ediyorum. Şu anda, ben ağırlıklarınHMatrix
üzerinde (formun
(RandomGen g) => g -> a -> (b,g)
arasında) rasgele fonksiyonu eşleştirmek için çalışıyorum.
varolan fmap değiştirmek (ya da katlama?) Yapılabilir eğer rastgele bir fonksiyonu faydalanmak için bir genellenebilir şekilde istiyoruz. Örneğin, ben ya da girişine bazı Gauss gürültü eklemek olmayabilir ve bu ağın tamamına uygulamak istiyoruz bir işlevi olabilir. Sorun şu ki, rasgele sayı üreteçleriyle nasıl çalışacağım.
haritası için, Şu anda yapıyorum şu:
rmap :: (StdGen -> a -> (b,StdGen)) -> StdGen -> [a] -> ([b],StdGen)
rmap _ g [] = ([],g)
rmap f g (x:xs) = let (mapped, g') = rmap f g xs
(rVal, g'') = f g' x
in (rVal:mapped, g'')
Bu benim için kesmek gibi görünüyor ve ben daha bu rastgelelik nasıl başa bazı tavsiyelerde olabilir daha iyi haskellers bazı umuyordum etkili bir şekilde?