news 2026/5/1 6:06:18

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/4/25 21:39:13

【智谱Open-AutoGLM部署全指南】:从零到上线的5大核心步骤详解

第一章:智谱Open-AutoGLM部署概述智谱AI推出的Open-AutoGLM是一个面向自动化文本生成任务的开源大模型工具,旨在降低用户在复杂NLP场景下的开发门槛。该模型支持多轮对话、指令理解与任务编排,适用于智能客服、内容生成和代码辅助等多个领域。…

作者头像 李华
网站建设 2026/4/21 6:54:33

shadcn/ui分隔线组件终极指南:5分钟打造专业级界面布局

shadcn/ui分隔线组件终极指南:5分钟打造专业级界面布局 【免费下载链接】awesome-shadcn-ui A curated list of awesome things related to shadcn/ui. 项目地址: https://gitcode.com/gh_mirrors/aw/awesome-shadcn-ui 你是否曾为界面信息堆砌而烦恼&#x…

作者头像 李华
网站建设 2026/4/27 13:58:14

【Open-AutoGLM手机AI助手深度解析】:揭秘下一代移动端大模型技术内核

第一章:Open-AutoGLM手机AI助手的技术演进与定位Open-AutoGLM作为新一代开源手机端AI助手框架,融合了大语言模型推理优化、设备端智能调度与用户情境感知等核心技术,致力于在资源受限的移动环境中实现高效、安全、个性化的自然语言交互体验。…

作者头像 李华
网站建设 2026/4/23 8:04:58

利用RAG构建智能问答平台实战经验分享

目前公司的智能问答平台利用RAG技术构建,现给大家分享下通RAG技术构建智能问平台的具体流程和原理。 一、什么是RAG RAG是检索增强生成技术(Retrieval-Augmented Generation),目前是构建智能问答的重要技术。RAG相比传统的检索可…

作者头像 李华
网站建设 2026/4/18 10:41:41

别让代码卡住你的论文:毕业生源码难题的破解之道

深夜的实验室,屏幕幽幽的光映着一张疲惫的脸。手指在键盘上停顿许久,却只敲出几行不断报错的代码。这或许是许多毕业生在撰写论文时最熟悉的场景——当理论设计完美,实验方案严谨,却偏偏卡在了代码实现这一关。 据 CSDN 开发者调查…

作者头像 李华
网站建设 2026/4/21 20:19:31

一文读懂上下文工程:AI如何化身“记忆大师”?

随着大型语言模型(LLM)技术的飞速发展,我们与AI的交互模式正在经历深刻的变革。从最初的简单问答,到多轮对话,再到如今能够自主规划、执行复杂任务的AI 智能体(Agent),当我们惊叹于A…

作者头像 李华