当前位置: 首页 > news >正文

2026.1.17总结

2: 计算机视觉基础

以下是代码的完整执行流程:
导入库​ → 导入PyTorch及相关工具库
定义CNN模型​ → 构建两层卷积+全连接的神经网络结构
数据准备​ → 下载MNIST数据集并进行标准化预处理
初始化​ → 创建模型、损失函数和优化器
训练循环(10个epoch):
训练阶段:前向传播 → 计算损失 → 反向传播 → 参数更新
测试阶段:评估模型准确率
记录结果​ → 保存每个epoch的训练损失和测试准确率
可视化​ → 绘制损失和准确率变化曲线
结束​ → 显示训练完成的模型性能图表
import torch
import torch.nn as nn
import torch.nn.functional as F
import torchvision
import torchvision.transforms as transforms
from torch.utils.data import DataLoader
import matplotlib.pyplot as plt

2.1 CNN基础架构

class CNN(nn.Module):
def init(self):
super(CNN, self).init()
# 卷积层
self.conv1 = nn.Conv2d(1, 32, kernel_size=3, padding=1)
self.conv2 = nn.Conv2d(32, 64, kernel_size=3, padding=1)

    # 池化层self.pool = nn.MaxPool2d(2, 2)# 全连接层self.fc1 = nn.Linear(64 * 7 * 7, 128)self.fc2 = nn.Linear(128, 10)# Dropoutself.dropout = nn.Dropout(0.5)def forward(self, x):# 卷积层1 + 激活函数 + 池化x = self.pool(F.relu(self.conv1(x)))# 卷积层2 + 激活函数 + 池化x = self.pool(F.relu(self.conv2(x)))# 展平x = x.view(-1, 64 * 7 * 7)# 全连接层x = F.relu(self.fc1(x))x = self.dropout(x)x = self.fc2(x)return x

2.2 数据加载和预处理

def load_mnist():
"""加载MNIST数据集"""
transform = transforms.Compose([
transforms.ToTensor(),
transforms.Normalize((0.5,), (0.5,))
])

# 训练集
trainset = torchvision.datasets.MNIST(root='./data', train=True,download=True, transform=transform
)# 测试集
testset = torchvision.datasets.MNIST(root='./data',train=False,download=True,transform=transform
)trainloader = DataLoader(trainset, batch_size=64, shuffle=True)
testloader = DataLoader(testset, batch_size=64, shuffle=False)return trainloader, testloader

2.3 完整训练流程

def train_cnn():
# 加载数据
trainloader, testloader = load_mnist()

# 初始化模型
model = CNN()
criterion = nn.CrossEntropyLoss()
optimizer = optim.Adam(model.parameters(), lr=0.001)# 训练循环
num_epochs = 10
train_losses = []
test_accuracies = []for epoch in range(num_epochs):model.train()running_loss = 0.0# 训练阶段for images, labels in trainloader:# 前向传播outputs = model(images)loss = criterion(outputs, labels)# 反向传播optimizer.zero_grad()loss.backward()optimizer.step()running_loss += loss.item()avg_loss = running_loss / len(trainloader)train_losses.append(avg_loss)# 测试阶段model.eval()correct = 0total = 0with torch.no_grad():for images, labels in testloader:outputs = model(images)_, predicted = torch.max(outputs.data, 1)total += labels.size(0)correct += (predicted == labels).sum().item()accuracy = 100 * correct / totaltest_accuracies.append(accuracy)print(f'Epoch [{epoch+1}/{num_epochs}], 'f'Loss: {avg_loss:.4f}, 'f'Accuracy: {accuracy:.2f}%')return model, train_losses, test_accuracies

2.4 可视化训练结果

def plot_training_results(train_losses, test_accuracies):
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 4))

# 损失曲线
ax1.plot(train_losses, label='Training Loss')
ax1.set_xlabel('Epoch')
ax1.set_ylabel('Loss')
ax1.set_title('Training Loss over Epochs')
ax1.legend()
ax1.grid(True)# 准确率曲线
ax2.plot(test_accuracies, label='Test Accuracy', color='orange')
ax2.set_xlabel('Epoch')
ax2.set_ylabel('Accuracy (%)')
ax2.set_title('Test Accuracy over Epochs')
ax2.legend()
ax2.grid(True)plt.tight_layout()
plt.show()

运行训练

print("开始训练CNN模型...")
model, train_losses, test_accuracies = train_cnn()
plot_training_results(train_losses, test_accuracies)

http://www.jsqmd.com/news/270078/

相关文章:

  • windows 删除驱动
  • 【PR】音频调色
  • 垃圾有机质燃烧的热值
  • 推N返1推3返H5商城电商平台抖音快手微信小程序看广告流量主开源
  • 2026.1.16总结
  • C++中虚函数调用慢5倍?深入理解vtable和性能开销
  • 从 ELF 视角理解 C/C++ 程序的内存布局:通用段、C++ 专属段与加载机制解析
  • Turnitin系统计算重复率的方式!
  • Qoder编程开发全指南:从概念到实践的AI驱动编程范式
  • AI原生应用领域多模态交互的技术挑战与解决方案
  • 互联网大厂Java面试实战:Spring Boot与微服务在电商场景中的应用解析
  • RAG系统架构
  • DiFi:当Wi-Fi遇上区块链,重新定义网络访问
  • 强烈安利9个AI论文平台,本科生搞定毕业论文不求人!
  • 【计算机毕业设计案例】基于python-CNN深度学习卷积神经网络对不同柑橘病变识别
  • 事实核查领域的AI原生应用:现状、问题与突破
  • 全网最全研究生必用AI论文网站TOP10:开题报告文献综述深度测评
  • DevEco Studio:页面预览
  • STM32 单片机实战:基于 HAL 库的串口通信与中断处理详解
  • “星火行业分析师”获国家级认可,讯飞的大模型应用前景何在?
  • Windows安装Dokcer Desktop与汉化
  • 2026专科生必备10个降AI率工具测评榜单
  • 当两个分布的0值具有特殊物理意义,怎么进行对齐 ?
  • 2024美团_京东Hive面试真题解析:原理+实战+优化,附详细答案
  • python: 安装python 依赖pip install xxx报错,pip 不是内部或外部命令,也不是可运行的程序
  • 深度学习毕设选题推荐:基于python-CNN卷积神经网络机器学习对不同柑橘病变识别
  • 近视防控:一场需要耐心与坚持的“持久战”!
  • 深度学习毕设项目推荐-基于python-深度学习CNN-pytorch卷神经网络训练识别蝴蝶-蚂蚱等昆虫
  • 产线上,逐个产品高速数据记录的一个方法
  • 怎么做才能让孩子疯涨的近视度数减缓?