首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法产生斜纹金枪鱼结果角

无法产生斜纹金枪鱼结果角
EN

Stack Overflow用户
提问于 2022-05-20 10:22:59
回答 1查看 283关注 0票数 -1

我创建了一个模型,并与optuna进行了调优。

代码语言:javascript
复制
def mymodel(hp):
    clear_session()
    imageModel = Sequential() 
    imageModel.add(Conv2D(hp.suggest_categorical("kernel1", [32,64,128]),
                          hp.suggest_categorical("filter1", [3,5]),
                          activation='relu', padding='valid', strides=2,input_shape=(300, 300, 1)))
    imageModel.add(MaxPool2D(pool_size=2, strides=2))
   
    imageModel.add(Flatten())
    imageModel.add(Dense(hp.suggest_categorical("dense", [32,64,128]), activation='relu'))
  
    imageModel.add(Dense(1, activation='sigmoid'))  

    imageModel.compile(optimizer=RMSprop(),loss='binary_crossentropy',metrics=['accuracy'])
    imageModel.fit(XTrain,YTrain,epochs = 20,validation_data=(XVal,YVal),verbose=0)
    result=imageModel.evaluate(XTest,YTest)
    return result[1]

是这样调的

代码语言:javascript
复制
if __name__ == "__main__":
    
    study = optuna.create_study(direction="maximize")
    study.optimize(mymodel, n_trials=100, timeout=6000)

    print("Number of finished trials: {}".format(len(study.trials)))

    print("Best trial:")
    trial = study.best_trial

    print("  Value: {}".format(trial.value))

    print("  Params: ")
    for key, value in trial.params.items():
        print("    {}: {}".format(key, value))

现在,假设它调整了,给了我一些参数,我把它们重新放到了建筑和训练模型中,使用keras函数,它不会重现结果。

代码语言:javascript
复制
def mymodel():
    clear_session()
    imageModel = Sequential() 
    imageModel.add(Conv2D(32,3,activation='relu', padding='valid', strides=2,input_shape=(300, 300, 1)))
    imageModel.add(MaxPool2D(pool_size=2, strides=2))
   
    imageModel.add(Flatten())
    imageModel.add(Dense(64, activation='relu'))
  
    imageModel.add(Dense(1, activation='sigmoid'))  

    imageModel.compile(optimizer=RMSprop(),loss='binary_crossentropy',metrics=['accuracy'])
    imageModel.fit(XTrain,YTrain,epochs = 20,validation_data=(XVal,YVal),verbose=0)
    result=imageModel.evaluate(XTest,YTest)
    return result[1]
mymodel()

在笔记本的开头,我写了以下几行

代码语言:javascript
复制
import os
import numpy as np
import tensorflow as tf
import random
seed=0
os.environ['PYTHONHASHSEED'] = str(seed)
np.random.seed(seed)
random.seed(seed) 
tf.random.set_seed(seed)

我如何处理这个问题?

EN

回答 1

Stack Overflow用户

发布于 2022-05-20 15:58:49

为了修正奥普图纳的结果,我们需要

代码语言:javascript
复制
study = optuna.create_study(direction="maximize")

使用

代码语言:javascript
复制
study = optuna.create_study(direction="maximize", sampler=optuna.samplers.TPESampler(seed=seed))

请参阅https://optuna.readthedocs.io/en/stable/faq.html#how-can-i-obtain-reproducible-optimization-results

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72317308

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档