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

使用kerastuneR包调优深度神经网络的代码报错原因排查

报错产生原因

这个错误是指标命名不匹配导致的:

  • 你初始化RandomSearch调参器时,指定的优化目标是val_accuracy(验证集准确率),要求调参模块从训练返回的日志里找这个字段来评估模型效果。
  • 你当前环境安装的Keras/TensorFlow版本,训练过程输出的指标用的是简写命名:训练集准确率字段为acc、验证集准确率字段为val_acc,返回的所有指标key里根本没有val_accuracy,调参器找不到指定的优化目标,就会抛出这个值错误。
修复方案

两种方案任选其一即可解决报错:

  1. 修改调参器的优化目标名,和当前Keras输出的指标名对齐
    把初始化调参器的objective参数值从val_accuracy改成val_acc,对应代码片段:
tuner = RandomSearch(
  build_model,
  objective = 'val_acc',
  max_trials = 5,
  executions_per_trial = 3,
  directory = 'my_dir',
  project_name = 'helloworld')
  1. 强制Keras输出全称命名的准确率指标,匹配你原来写的目标名
    修改模型编译部分的metrics参数,显式指定准确率指标的名称为accuracy,对应代码片段:
model %>% layer_dense(units = hp$Int('units',
                                     min_value = 32,
                                     max_value = 512,
                                     step=  32),input_shape = ncol(x_data),
                      activation =  'relu') %>%
  layer_dense(units = 1, activation = 'sigmoid') %>% 
  compile(
    optimizer = tf$keras$optimizers$Adam(
      hp$Choice('learning_rate',
                values=c(1e-2, 1e-3, 1e-4))),
    loss = 'binary_crossentropy',
    metrics = tf$keras$metrics$BinaryAccuracy(name='accuracy')
  )

注:你原来的代码里二分类任务最后一层用1个神经元+softmax激活搭配binary_crossentropy损失是不合理的,softmax适用于多分类输出多个类别的概率场景,二分类单输出应该用sigmoid激活,这个问题不会触发本次报错,但会导致模型训练效果异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 02:03:25