- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用用于 R 的 keras 来集成多个神经网络。为此,我想通过使用 来并行化不同网络的训练。 “foreach”环形。
models <- list()
x_bagged <- list()
y_bagged <- list()
n_nets = 2
bag_frac <-0.7
len <- nrow(x_train)
for(i in 1:n_nets){
sam <- sample(len, floor(bag_frac*len), replace=FALSE)
x_bagged[[i]] <- x_train[sam,]
y_bagged[[i]] <- y_train[sam]
models[[i]] <- keras_model_sequential()
models[[i]] %>%
layer_dense(units = 100, input_shape = ncol(x_train), activation = "relu", kernel_initializer = 'glorot_normal') %>%
layer_batch_normalization() %>%
layer_dense(units = 100, activation = custom_activation, kernel_initializer = 'glorot_normal') %>%
layer_dense(units = 1, activation = 'linear', kernel_initializer = 'glorot_normal')
models[[i]] %>% compile(
loss = "MSE",
optimizer= optimizer_sgd(lr=0.01)
)
}
library(foreach)
library(doParallel)
cl<-makeCluster(2)
registerDoParallel(cl)
nep <- 10
foreach(i = 1:n_nets,.packages=c("keras")) %dopar% {
models[[i]] %>% keras::fit(
x_bagged[[i]], y_bagged[[i]],
epochs = nep,
validation_split = 0.1,
batch_size =256,
verbose=1
)
}
stopCluster(cl)
Error in {: task 1 failed - "'what' must be a function or character string" Traceback:
- foreach(i = 1:n_reti, .packages = c("keras")) %dopar% { . models[[i]] %>% keras::fit(x_bagged[[i]], y_bagged[[i]], .
epochs = nep, validation_split = 0.1, batch_size = 256, .
verbose = 1) . }- e$fun(obj, substitute(ex), parent.frame(), e$data)
最佳答案
虽然这个问题已经很老了,但我遇到了同样的问题,所以我在这里发布了解决方案。问题是 Keras 模型对象在序列化之前无法传输给工作人员。一个快速的解决方法是在将模型发送给工作人员之前序列化模型,然后在本地节点上反序列化它们:
library(foreach)
library(doParallel)
cl<-makeCluster(2)
registerDoParallel(cl)
nep <- 10
# Serialize models before sending them to the workers
models_par <- lapply(models_par, keras::serialize_model)
# Now send the models, not just the indices
foreach(model = models_par,.packages=c("keras")) %dopar% {
# Unserialize locally
model_local <- keras::unserialize_model(model)
model_local %>% keras::fit(
x_bagged[[i]], y_bagged[[i]],
epochs = nep,
validation_split = 0.1,
batch_size =256,
verbose=1
)
# Serialize before sending back to master
keras::serialize_model(model_local)
}
stopCluster(cl)
关于r - 使用 doParallel 在 R 中并行化 keras 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51242338/
registerDoParallel 中的集群和核心有什么区别?使用 doParallel 包时? 我的理解是否正确,在单台机器上这些是可以互换的,我会得到相同的结果: cl library(doP
以下问题是与此处描述的问题相关的非常详细的问题。 Previous Question 使用在 R 版本 3.2.3 的 c4.8xlarge(36 核)上启动的 Ubuntu Server 14.04
我正在尝试编写一个具有多线程功能的 CRAN 包。我使用 doSNOW 实现了完美的解决方案,但该软件包已被 CRAN 团队标记为“取代”,他们要求我切换到 doParallel 解决方案。这很好,但
我在 R 中创建了一个顺序模拟来迭代一个过程 10,0000 次。这需要大约 70 分钟,所以我决定与 doParallel 包并行尝试相同的事情。 我的 foreach 循环调用了一个名为“inv.
我在局域网上有两台服务器,全新安装了 Centos 6.4 minimum 和 R 3.0.1。两台计算机都安装了 doParallel、snow 和 snowfall 包。 服务器可以通过 ssh
我正在尝试使用 doParallel 包来估计多个非参数模型。我的问题似乎与 np 包有关。看看这个可重现的例子: library(np) library(doParallel) df 修复
我一直在使用apply将data.frame的每一行提交到R中的function使用Windows 10。这种方法有效。然而,随着函数变得更加复杂并且数据集更大,这种方法变得不可行。因此,我希望使用并
考虑使用并行 foreach 生成随机值的非常基本(且效率低下)的代码: cl <- makeCluster(2) registerDoParallel(cl) foreach(i = 1:100)
我一直在使用apply将data.frame的每一行提交到R中的function使用Windows 10。这种方法有效。然而,随着函数变得更加复杂并且数据集更大,这种方法变得不可行。因此,我希望使用并
我正在尝试设置一个并行任务,其中每个工作人员都需要进行数据库查询。我正在尝试为每个工作人员设置一个连接,如 this question 中所示但每次我尝试它都会返回 无论我注册了多少 worker 。
我正在一个 12 节点集群上运行一个并行进程。 并且想知道是否有办法在 foreach 期间获取节点 ID 或节点编号或节点名称称呼? 像这样的东西: foreach(i = 1:12, .combi
我有这段代码用于并行写入我的结果。我在 R 中使用 foreach 和 doParallel 库。 output_location='/home/Desktop/pp/' librar
我编写了一个运行良好的脚本,但它似乎并未进行并行处理。我尝试将内核从 3 个更改为 16 个,但生成数据的速度没有改变。谁能告诉我我做错了什么以及如何让它发挥作用? setwd("E:/Infecti
当我将 caret 与新配方包一起使用时,即 caret::train.recipe(),如果 doParallel 也用于注册并行后端,我会收到一条错误消息。附件是一个可重现的示例(插入符号文档中官
我正在尝试合并一个大 data.frame用一个小的,并并行计算。下面的代码完美运行,最大化了我机器的所有内核: len <- 2000000 set.seed(666) dat = paste(sa
我正在使用发布的示例代码 here使用 doParallel + foreach 显示 progress_bar(来自 progress 包)。然而,那里的解决方案使用 doSNOW(例如我用于测试的
我正在为 R 构建一个包,我希望它能够跨平台。我在Linux下开发,函数mclapply将从 parallel 开始使用包裹。 Windows(使用 doParallel )不支持此软件包。我真的很喜
如果我运行 foreach... %dopar%在不注册集群的情况下,foreach 会引发警告,并按顺序执行代码: library("doParallel") foreach(i=1:3) %dop
我有一个包含循环的函数 myfun = function(z1.d, r, rs){ x = z1.d[,r] or.d = order(as.vector(x), decreasing=TR
我必须运行大量随机森林模型,因此我想在我的 8 核服务器上使用 doParallel 来加快进程。 然而,某些模型需要比其他模型更长的时间,甚至可能会抛出错误。我想并行运行 8 个模型,如果一个模型抛
我是一名优秀的程序员,十分优秀!