李宏毅机器学习HW1总结
问题
经典回归问题,给定一些变量去预测另外一个变量 。
HW1
固定参数
config = {
# 将来要用到的超参数
"seed" : 5201314,
"valid_ratio":0.2,
"select_all":True,
"feat_idx":[0,1,2,3,4],
"batch_size":256,
'n_epochs':3000,
'learning_rate':1e-5,
'save_path':'./models/model.ckpt',
'early_step':400
}
def same_seed(seed):#设置固定的随机种子使得程序的随机具有复现性
'''Fixes random number generator seeds for reproducibility.'''
torch.backends.cudnn.deterministic = True #每次返回的卷积算法将是确定的
torch.backends.cudnn.benchmark = False
np.random.seed(seed)
torch.manual_seed(seed)
if torch.cuda.is_available(): #为GPU设置种子
torch.cuda.manual_seed_all(seed)
数据处理
导入库
from torch.utils.data import DataLoader,Dataset,random_split
#DataLoader 用于将数据分为多个batch用于加速训练
#Dataset 处理数据方便后续的 DataLoader
#random_split 用于将一个数据随机分为多份
读入数据
import pandas as pd
train_data,test_data = pd.read_csv('./covid.train.csv').values[:,1:],pd.read_csv('./covid.test.csv').values[:,1:]
对数据进行划分,得到训练集、验证集、与测试集
def train_valid_split(data_set,valid_ratio,seed):
valid_set_size = int(valid_ratio*len(data_set))
train_set_size = len(data_set) - valid_set_size
train_data,valid_data = random_split(data_set,[train_set_size,valid_set_size],generator=torch.Generator().manual_seed(seed))
#
return np.array