我面临以下问题:
我有一个函数叫做火车模型在单个线程上运行很长时间。当它完成计算时,它返回一个函数作为输出参数,我们称之为f。当我询问这个的类型时f,朱莉娅返回:
(具有 1 种方法的通用函数)
(我不确定最后一条信息对阅读本文的人是否有用)
现在在第二步中,我需要应用函数f在一个非常大的值数组上。这是我想并行的一个步骤。使用多个进程启动 Julia 后,例如
julia -p 4
理想情况下,我会使用:
pmap(f, my_values)
也许:
aux = @parallel (hcat) for ii=1:100000000
f(my_values[ii])
end
不幸的是,这不起作用。朱莉娅抱怨工人们不知道这个功能f,即我收到一条消息:
错误:函数 f 未在进程 2 上定义
我怎样才能实现功能f可供所有工人使用?显然,“肮脏”的解决方案是运行耗时的函数火车模型对所有工人来说,也许像这样:
@everywhere f = TrainModel( ... )
但这会浪费CPU,因为我想要的只是结果f可供所有工人使用。
虽然我搜索了类似问题的帖子,但到目前为止我找不到答案......
提前致谢!
最好的,
N.
返回函数的方法看起来很优雅,但不幸的是,与 JavaScript 不同,Julia 在创建函数时不会解析所有变量。
从技术上讲,您的训练函数可以生成函数的源代码,其中包含所有训练参数的文字值。然后将其传递给每个工作进程,工作进程可以在其环境中将其解析为可调用函数。
我建议返回一个数据结构,其中包含生成训练函数的所有信息:ANN 的权重、支持向量、决策规则......
在工作进程上定义一个“经过训练的”函数,以便它将利用经过训练的参数。无论如何,您可能希望能够将训练结果保存到磁盘,以便可以轻松地重新生成计算。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)