STAN: Map_rect

原文:23.2 Map-rect | Stan User’s Guide

Map-reduce可以把大型运算分成模块计算然后合并。

map函数可以将一个函数应用到一个集合的各成员上,然后返回一个结果集合。如:mapf(x)=x^2over the vector[3,5,10] produces the vector [9,25,100]。

map的输出常常被传给一个reduction函数。

reduction函数收到一个任意长度的序列然后返回一个输出,如求和或排序


Map函数签名

vector map_rect((vector, vector, real[], int[]):vector f,

                            vector phi, vector[] thetas,

                            data real[ , ] x_rs, data int[ , ] x_is);

-    后缀 _rect 表示函数的参数的数据结构是 rectangular。对于ragged inputs, ragged inputs must be padded out to rectangular form.

-    数组theta是f的参数;x_rs是实值数据,x_is是整数值数据,后缀s表示数据结构是数组,它们的值必须来自data block或transformed data block。这些数组将会并行的传给f,所以必须有相同的size。

-    phi的值将会重复用在并行中。

-    (vector, vector, real[], int[]):vector 规定了f的函数签名

           vector f(vector phi, vector theta,

                        data real[] x_r, data int[] x_i);

map_rect语义

map_rect(f, phi, thetas, xs, ns)

= f(phi, thetas[1], xs[1], ns[1]) . f(phi, thetas[2], xs[2], ns[2]) . ... . f(phi, thetas[N], xs[N], ns[N])

其中‘.’表示连接。每个f的返回为一个vector,连接N个vector成为一个vector。


©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容