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

R语言Keras设置verbose=1/2仍无训练输出问题求助

解决R语言Keras训练时无Epoch日志输出的问题

排查方向1:检查控制台输出设置

  • 若使用RStudio,打开Tools -> Global Options -> Console,确认勾选"Show output inline",避免控制台被设置为静默模式。
  • 若用终端运行R,检查是否开启了输出重定向,确保终端正常接收程序输出。

排查方向2:调整TensorFlow日志级别

R的Keras依赖TensorFlow,若日志级别过高会屏蔽训练日志,在调用fit()前运行以下代码强制开启INFO级输出:

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

排查方向3:修正callback参数类型

你的callback_model_checkpoint中save_best_only使用了字符串'true',但R-Keras要求该参数为布尔值TRUE(无引号),错误类型可能导致回调异常影响日志:

checkpointer <- callback_model_checkpoint(
  filepath = 'model.weights.best.hdf5', 
  verbose = 1, 
  save_best_only = TRUE  # 改为布尔值
)

排查方向4:更新Keras与TensorFlow版本

旧版本可能存在输出bug,运行以下命令更新依赖后重启R:

install.packages("keras")
library(keras)
install_keras()

排查方向5:自定义日志回调

若以上方法无效,可手动添加回调强制输出训练信息:

custom_logger <- callback_lambda(
  on_epoch_end = function(epoch, logs) {
    cat(sprintf("Epoch %d/%d\n", epoch+1, 5))
    cat(sprintf("%.2fs - loss: %.4f - acc: %.4f - val_loss: %.4f - val_acc: %.4f\n",
                logs$epoch_time, logs$loss, logs$accuracy, logs$val_loss, logs$val_accuracy))
  }
)

然后在fit()中加入该回调:

k <- model %>% fit(
  x_train, y_train, 
  batch_size = 32, 
  epochs = 5, 
  validation_data = list(x_test, y_test), 
  callbacks = list(checkpointer, custom_logger), 
  verbose = 1, 
  shuffle = TRUE  # 同样建议改为布尔值
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 10:05:22