深度学习项目1:COVID预测

文章目录

需求

在这里插入图片描述

算法分析

这是个很明显的回归问题
整体思路:数据加载器设计,模型设计,损失函数设计,绘图函数设计,训练测试脚本设计
在这里插入图片描述
##训练集代码

import torch
import torch.optim as optim
from torch import nn
from torch.utils.data import DataLoader
from tqdm import tqdm

from CONSTANT import OUTPUTDIM
from dataloaders import CovIdDataset
from model import DNN
from utils.loss import plotLossCurve

# Set device
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")

# Model, loss, and optimizer
model = DNN(87).to(device)
# Hyperparameters
batch_size = OUTPUTDIM
learning_rate = 0.001
epochs = 100
# 更换了优化器
# optimizer = torch.optim.Adam(model.parameters(), lr=learning_rate, betas=(0.9, 0.999))
optimizer = optim.AdamW(model.parameters(), lr=1e-3, weight_decay=1e-4)
# 余弦退火调度器
scheduler = optim.lr_scheduler.CosineAnnealingLR(optimizer, T_max=50, eta_min=1e-5)

# Instantiate dataset and dataloader
dataset = CovIdDataset(r'E:\pycharmProjects\PythonProject22\data\covid_train.csv'
                       ,pattern='train')
dataloader = DataLoader(dataset, batch_size=batch_size, shuffle=False)

criterion = nn.MSELoss()

loss_list = []
mseList = []
for epoch in tqdm(range(epochs)):
    model.train()
    running_loss = 0.0
    for batch in dataloader:
        x = batch[0].to(device).unsqueeze(0)
        y = batch[1].to(device).unsqueeze(0)

        output = model(x)
        loss = criterion(output.view(-1), y.view(-1))
        mseList.append(loss)
        optimizer.zero_grad()
        loss.backward()
        optimizer.step()
        running_loss += loss.item()
    #  更新学习率
    scheduler.step()
    epoch_loss = running_loss/len(dataloader)
    loss_list.append(epoch_loss)
    print(f"Epoch {epoch + 1}/{epochs}, Loss: {epoch_loss:.4f}")

# Save model
torch.save(model.state_dict(), 'res/myParams.pt')
print("模型已保存!")

# Plot loss curve
plotLossCurve(loss_list)

print(min(mseList))

##测试集代码

# @File: test.py
# @Author: chen_song
# @Time: 2025-05-05 9:05

import torch
from torch.utils.data import DataLoader
import pandas as pd

from dataloaders import CovIdDataset
from model import DNN

if __name__ == '__main__':
    device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
    dict = torch.load(r"E:\pycharmProjects\PythonProject22\myParams.pt")
    model = DNN(87).to(device)
    model.load_state_dict(dict)
    testPath = r"E:\pycharmProjects\PythonProject22\data\covid_test.csv"
    testData = CovIdDataset(testPath,pattern='test')
    dataloader = DataLoader(testData, batch_size=1, shuffle=False)
    results = []
    for data in dataloader:
        x = data.to(device).unsqueeze(0)
        output = model(x).detach()
        value = output.item()
        results.append(value)

    # 将所有结果写入 DataFrame
    df = pd.DataFrame({'CK1': results})

    # 保存到 Excel 文件
    df.to_excel('output.xlsx', index=False)

整体代码可以通过网盘下载
完整代码
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

全栈开发 PAMI

下一个构架师就是你~

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

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

打赏作者

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

抵扣说明:

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

余额充值