如何使KERA在培训时利用所有可用的CPU容量?

如何使KERA在培训时利用所有可用的CPU容量?,r,machine-learning,keras,neural-network,cpu,R,Machine Learning,Keras,Neural Network,Cpu,我正在尝试为一个回归问题实现一系列不同的神经网络。当我训练一个单一型号时,我发现我的计算机没有利用所有可用的CPU,我想这会使训练更快 最终我想指定多个模型(大约4个),可以同时训练,但首先我只想在训练单个模型时利用所有CPU。下面的屏幕截图显示了我培训模型时CPU的使用情况: 在下面的代码中,我尝试设置use\u multiprocessing=TRUE,我认为这可能会有所帮助,但我得到的错误是没有使用参数 library(keras) epoch <- 50 lr <- 0

我正在尝试为一个回归问题实现一系列不同的神经网络。当我训练一个单一型号时,我发现我的计算机没有利用所有可用的CPU,我想这会使训练更快

最终我想指定多个模型(大约4个),可以同时训练,但首先我只想在训练单个模型时利用所有CPU。下面的屏幕截图显示了我培训模型时CPU的使用情况:

在下面的代码中,我尝试设置
use\u multiprocessing=TRUE
,我认为这可能会有所帮助,但我得到的错误是没有使用参数

library(keras)

epoch <- 50

lr <- 0.1

decay <- lr / epoch

# initialize model

fit_NN4 <- keras_model_sequential() %>% 
  layer_flatten(input_shape = training %>% select(-date, -mktcap, -permno, -ret.adj) %>% ncol()) %>% 
  layer_dense(units = 64, activation = "relu") %>% 
  layer_dense(units = 32, activation = "relu") %>% 
  layer_dense(units = 16, activation = "relu") %>% 
  layer_dense(units = 8, activation = "relu") %>% 
  layer_dense(units = 1)

# compile

fit_NN4 %>% compile(
  loss = "mse", # loss objective function
  #optimizer = optimizer_rmsprop(), 
  optimizer = optimizer_sgd(lr = lr, decay = decay),
  metrics = c("mean_absolute_error")
)

# train the model

fit_NN4 %>% 
  fit(
    
    # Training data
    
    x = training %>% select(-date, -mktcap, -permno, -ret.adj) %>% as.matrix(), 
    y = training %>% pull(ret.adj) %>% as.matrix(),
    
    epoch = epoch,
    
    # Validation data
    
    validation_data = 
      list(validation %>% select(-date, -mktcap, -permno, -ret.adj) %>% as.matrix(), 
            validation %>% pull(ret.adj) %>% as.matrix()),
    
    # Callbacks
    
    callbacks = list(
      callback_early_stopping(monitor = "val_loss", # early stop objective
                              mode = "min",         # minimize objective
                              verbose = 1,          # Return epoch at stop
                              patience = 4         # wait for 4 epochs to stop relative to min
                              use_multiprocessing = TRUE
                              )) # Use all CPU capacity       
    )     
库(keras)
纪元%
层密度(单位=64,活化=“relu”)%>%
层密度(单位=32,活化=“relu”)%>%
层密度(单位=16,活化=“relu”)%>%
层密度(单位=8,活化=“relu”)%>%
层密度(单位=1)
#编撰
适合编译%4%>%(
loss=“mse”,#损失目标函数
#优化器=优化器_rmsprop(),
优化器=优化器(lr=lr,衰减=衰减),
指标=c(“平均绝对误差”)
)
#训练模型
适合度\u NN4%>%
合身(
#训练数据
x=training%%>%select(-date,-mktcap,-permno,-ret.adj)%%>%as.matrix(),
y=训练%>%pull(ret.adj)%%>%as.matrix(),
纪元,
#验证数据
验证数据=
列表(验证%>%select(-date,-mktcap,-permno,-ret.adj)%%>%as.matrix(),
验证%>%pull(ret.adj)%%>%as.matrix()),
#回调
回调=列表(
回调(早停)(monitor=“val_loss”#早停目标
mode=“min”#最小化目标
verbose=1,#在停止时返回历元
耐心=4#等待4个纪元相对于分钟停止
使用多处理=真
))#使用所有CPU容量
)     

我得到
错误:找不到对象“training”
是的,我没有上传整个数据集,因为它太大了。因此,代码片段只是模型体系结构,不包含数据。您看到了吗:它进一步链接到这一点,这似乎是相关的: