Pytorch实现基于Hyperopt的TPE自动超参数调参

文章介绍了如何使用Hyperopt库来搜索和优化深度学习模型(DNN)的超参数,包括隐藏层数量、维度、学习率、批次大小和激活函数。通过定义目标函数(测试集的损失函数值)和搜索空间,进行超参数调优,并应用早停策略以提高效率。

1. 数据集处理

数据集分为训练集,验证集和测试集,其中训练集和验证集在训练过程中使用,测试集作为最终测试。

2. 具体代码

  • 目标函数:测试集的损失函数值
import torch 
from hyperopt import fmin,hp,Trials,space_eval,rand,tpe,anneal, STATUS_OK
from hyperopt.early_stop import no_progress_loss


tpe_train=0

if tpe_train:
        space_my={
        'n_hidden':hp.choice('n_hidden',[1,2,3,4,5,6]),
        'n_dim':hp.choice('n_dim',[50,100,200,300,400,500,600]),
        'lr':hp.choice('lr',[1e-5,1e-4,1e-3,1e-2]),
        'batch':hp.choice('batch',[32,64,128,256,512]),
        'act_fun':hp.choice('act_fun',['relu','swish','tanh'])
        }

        data_dir="datasets/dnn.csv"
        def hyperopt_train_verification(params):
                dnn_model=DNN(dim_hidden=params['n_dim'],hidden_layers=params['n_hidden'],act_name=params['act_fun'])
                trainer=Train_my(dnn_model,epoch=500,batch_size=params['batch'],data_path=data_dir,lr=params['lr'])
                trainer.train()
               
                loss_val=trainer.test(data_path="datasets/dnn.csv")
                return loss_val


        def loss_fn(params):
                MR_error=hyperopt_train_verification(params)
                return {'loss':MR_error,'status': STATUS_OK}

        '''
        1. 定义f;
        2. 定义space;
        '''
        early_stop_fn=no_progress_loss(20)

        start=time.time()
        best = fmin(
            fn=loss_fn,
            space=space_my,
            algo=tpe.suggest,
            max_evals=100,
            early_stop_fn=early_stop_fn)
        print(best)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值