【问题标题】:Why does the Optuna CSV file only display 1 item per parameter when I have multiple?当我有多个参数时,为什么 Optuna CSV 文件每个参数只显示 1 个项目?
【发布时间】:2021-09-06 17:26:36
【问题描述】:

为了使用 Optuna 优化我的网络,我在 Python 中创建了以下代码。

    activations_1 = trial.suggest_categorical('activation', ['relu', 'sigmoid', 'tanh', 'selu']) 
    activations_2 = trial.suggest_categorical('activation', ['relu', 'sigmoid', 'tanh', 'selu']) 
    activations_3 = trial.suggest_categorical('activation', ['relu', 'sigmoid', 'tanh', 'selu']) 
    activations_4 = trial.suggest_categorical('activation', ['relu', 'sigmoid', 'tanh', 'selu'])

model = Sequential([
            layers.Conv2D(filters=dict_params['num_filters_1'],
                          kernel_size=dict_params['kernel_size_1'],
                          activation=dict_params['activations_1'],
                          strides=dict_params['stride_num_1'],
                          input_shape=self.input_shape),
            layers.BatchNormalization(),
            layers.MaxPooling2D(2, 2),

            layers.Conv2D(filters=dict_params['num_filters_2'],
                          kernel_size=dict_params['kernel_size_2'],
                          activation=dict_params['activations_2'],
                          strides=dict_params['stride_num_2']),

如您所见,我进行了多次激活试验而不是一次,因为我想看看当每一层都有不同的激活函数时模型是否会产生更好的结果。如您所见,我对其他参数做了同样的事情。当我返回 study.bestparams 对象时,我的困惑就开始了:

{"num_filters": 32, "kernel_size": 4, "strides": 1, "activation": "selu", "num_dense_nodes": 64, "batch_size": 64}

试验中的最佳参数仅产生一个参数。它没有告诉我参数在哪里使用,也没有显示我使用的其他 3 个激活函数(或其他相关参数)。有没有办法精确显示我的模型使用的最佳设置以及在哪些层? (我知道保存最佳模型和模型摘要,但这对我没有太大帮助)

【问题讨论】:

    标签: python optimization artificial-intelligence data-science optuna


    【解决方案1】:

    问题是您对所有激活都使用了相同的参数名称。而不是:

        activations_1 = trial.suggest_categorical('activation', ['relu', 'sigmoid', 'tanh', 'selu']) 
        activations_2 = trial.suggest_categorical('activation', ['relu', 'sigmoid', 'tanh', 'selu']) 
        activations_3 = trial.suggest_categorical('activation', ['relu', 'sigmoid', 'tanh', 'selu']) 
        activations_4 = trial.suggest_categorical('activation', ['relu', 'sigmoid', 'tanh', 'selu'])
    

    试试:

        activations_1 = trial.suggest_categorical('activation1', ['relu', 'sigmoid', 'tanh', 'selu']) 
        activations_2 = trial.suggest_categorical('activation2', ['relu', 'sigmoid', 'tanh', 'selu']) 
        activations_3 = trial.suggest_categorical('activation3', ['relu', 'sigmoid', 'tanh', 'selu']) 
        activations_4 = trial.suggest_categorical('activation4', ['relu', 'sigmoid', 'tanh', 'selu'])
    

    【讨论】:

    • 我觉得自己好傻。非常感谢!
    • 我们都会犯这样的错误 :) 乐于助人!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-05
    相关资源
    最近更新 更多