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
相关产品推荐
相关产品推荐

