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

如何在Keras Tuner中按隐藏层数设置神经元数量上限?

Keras Tuner按总隐藏层数设置神经元上限的正确实现

需求是用Keras Tuner调整神经网络超参数,搜索最优隐藏层数和每层神经元数量,规则为:

  • 若模型有1层隐藏层,该层神经元数量上限为128
  • 若模型有2层隐藏层,每层神经元数量上限为64

你之前尝试的代码逻辑错误,因为是按循环索引判断上限,而非总层数:

for i in range(hp.Choice('num_layers', [1, 2])):
            
    max_units = 128 if i == 1 else 64
    hp_units = hp.Int(f'units_{i}', min_value=16, max_value=max_units, step=16)
    model.add(tf.keras.layers.Dense(units=hp_units, activation='relu', use_bias=True))

正确的实现方式是先获取总层数,再根据总层数统一设置每层的神经元上限:

# 先获取并保存选中的总隐藏层数
num_layers = hp.Choice('num_layers', [1, 2])

# 根据总层数确定所有隐藏层的神经元上限
max_units = 128 if num_layers == 1 else 64

# 循环添加对应数量的隐藏层
for i in range(num_layers):
    hp_units = hp.Int(f'units_{i}', min_value=16, max_value=max_units, step=16)
    model.add(tf.keras.layers.Dense(units=hp_units, activation='relu', use_bias=True))

这段代码的逻辑完全符合需求:

  • 当选中1层隐藏层时,该层神经元上限为128
  • 当选中2层隐藏层时,两层的神经元上限都为64
    彻底避免了按循环索引判断导致的逻辑错误,也满足了防止过参数化的要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 16:24:31