深度学习回归任务训练代码模版

深度学习回归任务训练代码模版

参数设置

超参设置:config 包含所有训练需要的超参数(便于后续的调参),以及模型需要存储的位置

device = 'cuda' if torch.cuda.is_available() else 'cpu'
config = {
   
    'seed': 5201314,       # 随机种子,可以自己填写. :)
    'select_all': False,   # 是否选择全部的特征
    'valid_ratio': 0.2,    # 验证集大小(validation_size) = 训练集大小(train_size) * 验证数据占比(valid_ratio)
    'n_epochs': 3000,       # 数据遍历训练次数           
    'batch_size': 256, 
    'learning_rate': 1e-5,              
    'early_stop': 400,     # 如果early_stop轮损失没有下降就停止训练.     
    'save_path': './models/model.ckpt'  # 模型存储的位置
}

功能函数

导入需要的Python包

# 数值、矩阵操作
import math
import numpy as np

# 数据读取与写入
import pandas as pd
import os
import csv

# 进度条
# from tqdm import tqdm
# 如果是使用notebook 推荐使用以下(颜值更高 : ) )
from tqdm.notebook import tqdm

# Pytorch 深度学习张量操作框架
import torch 
import torch.nn as nn
from torch.utils.data import Dataset, DataLoader, random_split
# 绘制pytorch的网络
from torchviz import make_dot

# 学习曲线绘制
from torch.utils.tensorboard import SummaryWriter

一些重要的方法(随机种子设置、数据拆分、模型预测)

# 定义一个函数来设置随机种子,以确保实验的可复现性
def same_seed(seed): 
    """
    设置随机种子(便于复现)
    """
    # 设置CUDA的确定性,确保每次运行的结果是确定的
    torch.backends.cudnn.deterministic = True
    # 关闭CUDA的benchmark模式,因为这与确定性运行模式冲突
    torch.backends.cudnn.benchmark = False
    # 设置NumPy的随机种子
    np.random.seed(seed)
    # 设置PyTorch的随机种子
    torch.manual_seed(seed)
    # 如果CUDA可用,则为GPU设置随机种子
    if torch.cuda.is_available():
        torch.cuda.manual_seed_all(seed)
    # 打印设置的种子值
    print(f'Set Seed = {
     seed}')

# 定义一个函数来将数据集随机拆分为训练集和验证集
def train_valid_split(data_set, valid_ratio, seed):
    """
    数据集拆分成训练集(training set)和 验证集(validation set)
    """
    # 计算验证集的大小
    valid_set_size = int(valid_ratio * len(data_set)) 
    # 训练集的大小是数据集总大小减去验证集大小
    train_set_size = len(data_set) - valid_set_size
    # 使用PyTorch的random_split函数来拆分数据集,传入随机种子以确保可复现性
    train_set, valid_set = random_split(data_set, [train_set_size, valid_set_size], generator=torch.Generator().manual_seed(seed))
    # 将拆分得到的数据集转换为NumPy数组格式并返回
    return np.array(train_set), np.array(valid_set)

# 定义一个函数来进行模型的预测
def predict(test_loader, model, device):
    # 将模型设置为评估模式
    model.eval() 
    # 初始化一个列表来存储预测结果
    preds = []
    # 遍历测试数据集
    for x in tqdm(test_loader):
        # 将数据移动到指定的设备上(CPU或GPU)
        x = x.to(device)                        
        # 使用with torch.no_grad()来禁止计算梯度,因为在预测模式下不需要计算梯度
        with torch.no_grad():
            # 进行前向传播以获得预测结果
            pred = model(x)         
            # 将预测结果从GPU移回CPU,并将其
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三水编程

感谢客官打赏~~~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值