内容简介:翻译自: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篇-代码生成器的原理精讲及使用方法
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Python编程无师自通
[美] 科里·奥尔索夫(Cory Althoff) / 宋秉金 / 人民邮电出版社 / 2019-1-1 / 59
畅销Python编程类入门书,美国亚马逊Kindle编程类排行榜榜一。 作者从文科毕业,通过自学编程转行为专业程序员,在硅谷工作多年后成功技术创业。本书不仅教读者如何使用Python语言编程,还会介绍其他书中所忽略的、编程初学者应该了解并掌握的其他所有知识点。 本书作者是一名自学成才的程序员,经过一年的自学,掌握了编程技能并在eBay找到了一份软件工程师的工作。本书是作者结合个人经验写......一起来看看 《Python编程无师自通》 这本书的介绍吧!