You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

KerasTuneR在RStudio中仅打印首次Trial输出的问题求助

问题:KerasTuneR fit_tuner 函数输出异常
  • 在RStudio中运行时,仅打印第1次Trial的训练进度,后续Trial无任何输出,且代码末尾的print("Completed")语句也无法执行打印
  • 在Rx64 4.1.2环境中运行时,虽能输出所有内容,但为一次性批量输出,而非逐行实时打印

复现代码

library(tidyverse)
library(tensorflow)
library(keras)
library(kerastuneR)
library(ggplot2)

x_data <- matrix(data = runif(500,0,1),nrow = 50,ncol = 5)
y_data <-  ifelse(runif(50,0,1) > 0.6, 1L,0L) %>% as.matrix()

x_data2 <- matrix(data = runif(500,0,1),nrow = 50,ncol = 5)
y_data2 <-  ifelse(runif(50,0,1) > 0.6, 1L,0L) %>% as.matrix()

hp = HyperParameters()
hp$Int('num_layers', 5L, 20L, 2L)
hp$Int('units', 60L, 160L, 10L)

build_model <- function(hp) { 
  
  model <- keras_model_sequential() %>%
    layer_dense(units = hp$get('units'), activation = 'relu', input_shape = 5)
  
  for (i in 1:hp$get('num_layers')) { 
    model %>% 
      layer_dense(units = hp$get('units'), activation = 'relu')
  }
  
  model %>% layer_dense(units = 1)
  
  model %>% compile(optimizer = 'adam', 
                    loss = 'binary_crossentropy', 
                    metrics = c('accuracy'))
  
  return(model)
  
}

tuner = RandomSearch(
  hypermodel =  build_model,
  max_trials = 3,
  executions_per_trial = 2,
  hyperparameters = hp,
  tune_new_entries = T,
  objective = 'val_accuracy',
  #directory = 'C:/Users/Penelope/Desktop/NN_models/',
  #project_name = 'BigFoot2', 
  overwrite = TRUE
)

tuner %>% fit_tuner(x = x_data, y = y_data, 
                    epochs = 2, 
                    validation_data = list(x_data2, y_data2))

print("Completed")

当前异常输出

Search: Running Trial #1

Value             |Best Value So Far |Hyperparameter
13                |?                 |num_layers
110               |?                 |units

Epoch 1/2
2/2 [==============================] - 1s 220ms/step - loss: 4.5302 - accuracy: 0.6000 - val_loss: 1.5124 - val_accuracy: 0.6000
Epoch 2/2
2/2 [==============================] - 0s 26ms/step - loss: 1.4636 - accuracy: 0.6000 - val_loss: 1.1391 - val_accuracy: 0.6000
Epoch 1/2
2/2 [==============================] - 1s 166ms/step - loss: 2.3739 - accuracy: 0.6000 - val_loss: 1.3020 - val_accuracy: 0.6000
Epoch 2/2
2/2 [==============================] - 0s 21ms/step - loss: 1.2651 - accuracy: 0.6000 - val_loss: 0.9689 - val_accuracy: 0.6000

已知问题及解决办法

这是kerastuneR与RStudio输出缓冲机制不兼容导致的常见问题,可尝试以下方案解决:

1. 关闭RStudio的输出缓冲

在代码开头添加:

options(stdout = file(""))

强制RStudio实时刷新输出流,避免后续Trial的输出被缓存。

2. 调整Keras的日志级别

手动设置Keras的日志输出模式,确保每个Trial的训练日志正常打印:

tensorflow::tf$compat$v1$logging$set_verbosity(tensorflow::tf$compat$v1$logging$INFO)

3. 手动刷新输出

在fit_tuner调用前后或关键节点添加刷新命令,强制输出缓冲区内容:

flush.console()

4. 更新依赖包

确保使用最新版本的kerastuneR、tensorflow和keras包,旧版本可能存在输出捕获bug:

install.packages("kerastuneR")
tensorflow::install_tensorflow()
keras::install_keras()

5. 使用RStudio终端运行

选中代码后点击"Run in Terminal",直接在系统终端执行代码,终端的输出缓冲机制更适配迭代训练的实时输出。

内容的提问来源于stack exchange,提问作者Mas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 12:06:27