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

为什么Optuna导出的CSV及最优参数仅显示1条同名分层参数

Optuna分层同类型超参数仅返回单条结果的解决方法

问题根源

你给不同层的同类型超参数设置了完全相同的参数名,Optuna以参数名为唯一标识,重名参数会被后续定义的同名字段直接覆盖,最终只会保留最后一次赋值的参数结果。

修复方案

1. 给每层参数添加唯一标识后缀

给每个层的激活函数、卷积核数量、步长等参数的名称增加层号后缀,保证每个参数名全局唯一,示例代码如下:

# 每一层参数名增加层号后缀,避免重名
activations_1 = trial.suggest_categorical('activation_1', ['relu', 'sigmoid', 'tanh', 'selu']) 
activations_2 = trial.suggest_categorical('activation_2', ['relu', 'sigmoid', 'tanh', 'selu']) 
activations_3 = trial.suggest_categorical('activation_3', ['relu', 'sigmoid', 'tanh', 'selu']) 
activations_4 = trial.suggest_categorical('activation_4', ['relu', 'sigmoid', 'tanh', 'selu'])

# 其余分层参数同理修改参数名
num_filters_1 = trial.suggest_int('num_filters_1', 16, 128, step=16)
num_filters_2 = trial.suggest_int('num_filters_2', 16, 128, step=16)
kernel_size_1 = trial.suggest_int('kernel_size_1', 2, 5)
kernel_size_2 = trial.suggest_int('kernel_size_2', 2, 5)
stride_num_1 = trial.suggest_int('stride_num_1', 1, 2)
stride_num_2 = trial.suggest_int('stride_num_2', 1, 2)

# 构建模型时直接使用对应变量即可,如果存入字典需保证键名和参数名完全对应
model = Sequential([
            layers.Conv2D(filters=num_filters_1,
                          kernel_size=kernel_size_1,
                          activation=activations_1,
                          strides=stride_num_1,
                          input_shape=self.input_shape),
            layers.BatchNormalization(),
            layers.MaxPooling2D(2, 2),

            layers.Conv2D(filters=num_filters_2,
                          kernel_size=kernel_size_2,
                          activation=activations_2,
                          strides=stride_num_2),
            # 后续层按相同规则配置即可
])

2. 验证输出结果

修改完成后重新运行优化流程,study.best_params返回的结果会包含所有分层的参数,格式示例如下:

{"num_filters_1": 32, "num_filters_2": 64, "kernel_size_1": 3, "kernel_size_2": 4, "strides_1": 1, "strides_2": 2, "activation_1": "relu", "activation_2": "selu", "activation_3": "tanh", "activation_4": "sigmoid", "num_dense_nodes": 64, "batch_size": 64}

此时导出的CSV文件也会为每个参数生成独立列,可直接查看每一层对应的最优参数配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 17:36:02