news 2026/4/17 6:26:33

Day48PythonStudy

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Day48PythonStudy

@浙大疏锦行

import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pyplot as plt import numpy as np # 设置中文字体支持 plt.rcParams["font.family"] = ["SimHei"] plt.rcParams['axes.unicode_minus'] = False # 解决负号显示问题 # 检查GPU是否可用 device = torch.device("cuda" if torch.cuda.is_available() else "cpu") print(f"使用设备: {device}") # 1. 数据预处理 # 训练集:使用多种数据增强方法提高模型泛化能力 train_transform = transforms.Compose([ # 随机裁剪图像,从原图中随机截取32x32大小的区域 transforms.RandomCrop(32, padding=4), # 随机水平翻转图像(概率0.5) transforms.RandomHorizontalFlip(), # 随机颜色抖动:亮度、对比度、饱和度和色调随机变化 transforms.ColorJitter(brightness=0.2, contrast=0.2, saturation=0.2, hue=0.1), # 随机旋转图像(最大角度15度) transforms.RandomRotation(15), # 将PIL图像或numpy数组转换为张量 transforms.ToTensor(), # 标准化处理:每个通道的均值和标准差,使数据分布更合理 transforms.Normalize((0.4914, 0.4822, 0.4465), (0.2023, 0.1994, 0.2010)) ]) # 测试集:仅进行必要的标准化,保持数据原始特性,标准化不损失数据信息,可还原 test_transform = transforms.Compose([ transforms.ToTensor(), transforms.Normalize((0.4914, 0.4822, 0.4465), (0.2023, 0.1994, 0.2010)) ]) # 2. 加载CIFAR-10数据集 train_dataset = datasets.CIFAR10( root='./data', train=True, download=True, transform=train_transform # 使用增强后的预处理 ) test_dataset = datasets.CIFAR10( root='./data', train=False, transform=test_transform # 测试集不使用增强 ) # 3. 创建数据加载器 batch_size = 64 train_loader = DataLoader(train_dataset, batch_size=batch_size, shuffle=True) test_loader = DataLoader(test_dataset, batch_size=batch_size, shuffle=False)
import torch import torch.nn as nn import torch.optim as optim import torch.nn.functional as F # 设置设备 device = torch.device("cuda" if torch.cuda.is_available() else "cpu") print(f"使用设备: {device}") # 1. 定义CNN模型 class CNN(nn.Module): def __init__(self): super(CNN, self).__init__() # ---------------------- 卷积特征提取部分 ---------------------- # 第一个卷积块 self.conv_block1 = nn.Sequential( nn.Conv2d(3, 32, kernel_size=3, padding=1), # [batch, 3, 32, 32] -> [batch, 32, 32, 32] nn.BatchNorm2d(32), nn.ReLU(inplace=True), nn.MaxPool2d(2) # [batch, 32, 32, 32] -> [batch, 32, 16, 16] ) # 第二个卷积块 self.conv_block2 = nn.Sequential( nn.Conv2d(32, 64, kernel_size=3, padding=1), # [batch, 32, 16, 16] -> [batch, 64, 16, 16] nn.BatchNorm2d(64), nn.ReLU(inplace=True), nn.MaxPool2d(2) # [batch, 64, 16, 16] -> [batch, 64, 8, 8] ) # 第三个卷积块 self.conv_block3 = nn.Sequential( nn.Conv2d(64, 128, kernel_size=3, padding=1), # [batch, 64, 8, 8] -> [batch, 128, 8, 8] nn.BatchNorm2d(128), nn.ReLU(inplace=True), nn.MaxPool2d(2) # [batch, 128, 8, 8] -> [batch, 128, 4, 4] ) # ---------------------- 全连接分类部分 ---------------------- self.classifier = nn.Sequential( nn.Linear(128 * 4 * 4, 512), nn.ReLU(inplace=True), nn.Dropout(0.5), nn.Linear(512, 256), nn.ReLU(inplace=True), nn.Dropout(0.3), nn.Linear(256, 10) ) def forward(self, x): # 卷积特征提取 x = self.conv_block1(x) x = self.conv_block2(x) x = self.conv_block3(x) # 展平 x = x.view(x.size(0), -1) # [batch, 128, 4, 4] -> [batch, 2048] # 分类 x = self.classifier(x) return x # 2. 初始化模型 model = CNN().to(device) print(f"模型参数量: {sum(p.numel() for p in model.parameters()):,}") print(f"可训练参数量: {sum(p.numel() for p in model.parameters() if p.requires_grad):,}") # 3. 定义损失函数和优化器 criterion = nn.CrossEntropyLoss() optimizer = optim.Adam(model.parameters(), lr=0.001, weight_decay=1e-4) # 添加L2正则化 scheduler = optim.lr_scheduler.ReduceLROnPlateau( optimizer, # 第一个参数是optimizer,不要用关键字参数 mode='min', factor=0.5, patience=5, threshold=0.01, min_lr=1e-5 )

训练完成!最终测试准确率: 79.96%

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/16 22:29:27

好写作AI:突破写作瓶颈!你的“灵感永动机”已上线

文思枯竭时,盯着文档的感觉,就像指望一台没插电的打印机自己吐出文章。写作瓶颈,堪称学术路上的“鬼打墙”。文献读了,数据有了,但大脑和文档之间,仿佛隔着一道叹息之墙——逻辑转不动,表达不好…

作者头像 李华
网站建设 2026/4/16 7:12:40

AI足球分析终极指南:计算机视觉如何重塑体育赛事智能解析

AI足球分析终极指南:计算机视觉如何重塑体育赛事智能解析 【免费下载链接】sports computer vision and sports 项目地址: https://gitcode.com/gh_mirrors/sp/sports 在体育科技飞速发展的今天,Roboflow Sports项目通过先进的计算机视觉技术为足…

作者头像 李华
网站建设 2026/4/16 1:33:18

Chaos Mesh:构建云原生系统弹性的混沌工程利器

Chaos Mesh:构建云原生系统弹性的混沌工程利器 【免费下载链接】chaos-mesh 项目地址: https://gitcode.com/gh_mirrors/cha/chaos-mesh 在云原生时代,系统的复杂性呈指数级增长。微服务架构、容器化部署虽然带来了灵活性和可扩展性,…

作者头像 李华
网站建设 2026/4/18 1:54:07

PaddlePaddle镜像支持容器化部署,完美融入云原生架构

PaddlePaddle镜像支持容器化部署,完美融入云原生架构 在AI应用加速落地的今天,一个常见的痛点依然困扰着许多团队:为什么模型在开发环境运行良好,一上线就“水土不服”?依赖冲突、环境差异、GPU驱动不兼容……这些问题…

作者头像 李华
网站建设 2026/4/17 2:53:39

告别论文焦虑,拥抱高效写作:百考通AI助你轻松搞定毕业论文!

在学术生涯的终点线前,毕业论文往往是横亘在每一位学子面前的一座大山。从选题的迷茫、框架的搭建,到内容的填充、格式的规范,每一个环节都可能让人焦头烂额,夜不能寐。别担心,你的智能学术助手——百考通(…

作者头像 李华
网站建设 2026/4/16 16:01:32

从0到1:研究生如何高效攻克期刊论文写作难题

深夜的实验楼灯光下,研究生李明对着电脑屏幕发呆。他已经为这篇期刊论文奋斗了三个月,选题换了两次,文献梳理了上百篇,但论文框架依然凌乱,实验数据不知如何分析,引言部分反复重写。 “导师说创新性不足&am…

作者头像 李华