首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >bnlearn的并行化(带有并行包)

bnlearn的并行化(带有并行包)
EN

Stack Overflow用户
提问于 2015-02-09 17:27:58
回答 1查看 1.8K关注 0票数 4

我正在使用Rbnlearn来估计贝叶斯网络结构。它使用parallel包进行内建并行化。然而,这是行不通的。

使用手册bnlearn::parallel integration中的示例

代码语言:javascript
复制
library(parallel)
library(bnlearn)

cl = makeCluster(2)

# check it works.
clusterEvalQ(cl, runif(10))    # -> this works

data(learning.test)
res = gs(learning.test, cluster = cl)

这里我得到了错误"Error in check.cluster(cluster) : cluster is not a valid cluster object."

有人知道怎么做吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-09 19:04:39

这是个窃听器。请向包维护人员报告。

这是check.cluster的代码

代码语言:javascript
复制
function (cluster) 
{
    if (is.null(cluster)) 
        return(TRUE)
    if (any(class(cluster) %!in% supported.clusters)) 
        stop("cluster is not a valid cluster object.")
    if (!requireNamespace("parallel")) 
        stop("this function requires the parallel package.")
    if (!isClusterRunning(cluster)) 
        stop("the cluster is stopped.")
}

现在,如果您查看cl

代码语言:javascript
复制
class(cl)
#[1] "SOCKcluster" "cluster" 

让我们重现一下支票:

代码语言:javascript
复制
bnlearn:::supported.clusters
#[1] "MPIcluster"  "PVMcluster"  "SOCKcluster"

`%!in%` <- function (x, table) {
  match(x, table, nomatch = 0L) == 0L
}
any(class(cl) %!in% bnlearn:::supported.clusters)
#[1] TRUE

cluster不在supported.clusters。我认为,函数应该只检查集群是否有一个受支持的类,而不是它是否有一个不受支持的类。

作为一项工作,您可以更改supported.clusters

代码语言:javascript
复制
assignInNamespace("supported.clusters", 
                  c("cluster", "MPIcluster",  
                    "PVMcluster", "SOCKcluster"), 
                  "bnlearn")
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28415654

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档