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)