内容简介:翻译自:https://stackoverflow.com/questions/42078395/how-to-use-a-random-generator-using-function-with-fmap-in-haskell
中是否存在任何进化算法框架,因为我无法找到任何?
我目前正在努力寻找一种以一般方式改变神经网络权重的方法.目前,我试图在权重的HMatrix上映射随机函数(形式(RandomGen g)=> g – > a – >(b,g)).
我想要一种通用的方法来修改现有的fmap(或fold?),以便在可以完成的情况下使用随机函数.例如,我可能有一个函数可能会或可能不会向其输入添加一些高斯噪声,并希望将其应用于整个网络.我遇到的问题是如何使用随机数生成器.
对于地图,我目前正在执行以下操作:
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'')
这对我来说似乎是一个黑客攻击,我希望一些更好的haskellers可能会对如何更有效地处理这种随机性提出一些建议?
Traversable
课程的用途.
mapAccumL
(以及它的从后到前的双胞胎
mapAccumR
)是一个高阶函数,它捕获一种广义的折叠和映射操作,在可遍历的结构上有状态地工作并转换元素.你的随机映射函数是这种模式的一个例子 – 正如你所看到的,mapAccumL的类型非常接近你的函数类型:
mapAccumL :: Traversable t => (a -> b -> (a, c)) -> a -> t b -> (a, t c) rmap :: (StdGen -> a -> (b, StdGen)) -> StdGen -> [a] -> ([b], StdGen)
我们可以设置t~ []和~StdGen,这样在一些元组翻转之后,rmap基本上是mapAccumL的另一个名字.
rmap f z = swap . mapAccumL (\x y -> swap (f x y)) z
翻译自:https://stackoverflow.com/questions/42078395/how-to-use-a-random-generator-using-function-with-fmap-in-haskell
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- Java代码生成器mybatis-generator的使用
- HTML页面生成器:使用JavaScript和Node创建CLI
- [译] 如何使用生成器减少内存占用,并让 Python 代码运行更快?
- [译] HTML 页面生成器:使用 JavaScript 和 Node 创建 CLI
- 时空之门前端代码生成器独立尝鲜版 4.5 公布,欢迎使用
- 小书MybatisPlus第7篇-代码生成器的原理精讲及使用方法
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Don't Make Me Think
Steve Krug / New Riders Press / 18 August, 2005 / $35.00
Five years and more than 100,000 copies after it was first published, it's hard to imagine anyone working in Web design who hasn't read Steve Krug's "instant classic" on Web usability, but people are ......一起来看看 《Don't Make Me Think》 这本书的介绍吧!
URL 编码/解码
URL 编码/解码
XML、JSON 在线转换
在线XML、JSON转换工具