一起深度学习

CIFAR-10 卷积神经网络

下载数据集

python 复制代码
 batchsz = 32
    cifar_train= datasets.CIFAR10('data',train=True,transform=torchvision.transforms.Compose([
        torchvision.transforms.Resize((32,32)),
        torchvision.transforms.ToTensor()
    ]),download=True)
    cifar_train = DataLoader(cifar_train,batch_size=batchsz,shuffle=True)

    cifar_test= datasets.CIFAR10('data',train=False,transform=torchvision.transforms.Compose([
        torchvision.transforms.Resize((32,32)),
        torchvision.transforms.ToTensor()
    ]),download=True)
    cifar_test = DataLoader(cifar_test,batch_size=batchsz,shuffle=True)

构建网络

新建一个lenet5

python 复制代码
import torch
from torch import nn
from torch.nn import functional as F
class Lenet5(nn.Module):

    def __init__(self):
        super(Lenet5,self).__init__()

        self.conv_unit = nn.Sequential(
            # x :[b,3,32,32] => [b,6,]
            nn.Conv2d(3,6,5,1),  #卷积层
            #subsamping  池化层
            nn.AvgPool2d(kernel_size=2,stride=2,padding=0),
            #
            nn.Conv2d(6,16,5,1,0),
            nn.AvgPool2d(kernel_size=2,stride=2,padding=0)
        )
        #flatten
        #fc_unit
        self.fc_unit = nn.Sequential(
            nn.Linear(16*5*5,120),
            nn.ReLU(),
            nn.Linear(120,84),
            nn.ReLU(),
            nn.Linear(84,10)
        )

        # self.criten = nn.CrossEntropyLoss()

    def forward(self,x):
        bachsz = x.size(0) #获取样本数量
        x = self.conv_unit(x)
        x = x.view(bachsz,16*5*5)
        logits = self.fc_unit(x)  #获取输出标签
        return logits

运行测试

python 复制代码
   device  = torch.device('cuda') #使用gpu运行
    model = Lenet5().to(device)  #实例化网络
    criten = nn.CrossEntropyLoss().to(device)  #使用交叉熵
    optimizer = optim.Adam(model.parameters(),lr=1e-3)  #采用Adam及逆行优化参数
    for epoch in range(1000):
        for batchidx,(x,lable) in enumerate(cifar_train):
            x,lable = x.to(device),lable.to(device)
            logits = model(x)  #获得预测输出标签值
            loss = criten(logits,lable) #计算损失值
            optimizer.zero_grad() #将梯度归零
            loss.backward() #方向传播
            optimizer.step() #优化参数
        print(epoch,loss.item())
        total_correct = 0
        total_num = 0
        model.eval()  
        with torch.no_grad():  #表示不需要求梯度
            for x,label in cifar_test:
                x,label = x.to(device),label.to(device)
                logits = model(x)
                pred = logits.argmax(dim=1)  获取预测值
                total_correct += torch.eq(pred,label).float().sum().item()
                total_num += x.size(0)
            acc = total_correct /total_num
            print(epoch,acc)

网络图如下:

相关推荐
惯导马工15 小时前
【论文导读】ORB-SLAM3:An Accurate Open-Source Library for Visual, Visual-Inertial and
深度学习·算法
隐语SecretFlow2 天前
国人自研开源隐私计算框架SecretFlow,深度拆解框架及使用【开发者必看】
深度学习
Billy_Zuo2 天前
人工智能深度学习——卷积神经网络(CNN)
人工智能·深度学习·cnn
羊羊小栈2 天前
基于「YOLO目标检测 + 多模态AI分析」的遥感影像目标检测分析系统(vue+flask+数据集+模型训练)
人工智能·深度学习·yolo·目标检测·毕业设计·大作业
l12345sy2 天前
Day24_【深度学习—广播机制】
人工智能·pytorch·深度学习·广播机制
九章云极AladdinEdu2 天前
超参数自动化调优指南:Optuna vs. Ray Tune 对比评测
运维·人工智能·深度学习·ai·自动化·gpu算力
研梦非凡2 天前
ICCV 2025|从粗到细:用于高效3D高斯溅射的可学习离散小波变换
人工智能·深度学习·学习·3d
通街市密人有2 天前
IDF: Iterative Dynamic Filtering Networks for Generalizable Image Denoising
人工智能·深度学习·计算机视觉
智数研析社2 天前
9120 部 TMDb 高分电影数据集 | 7 列全维度指标 (评分 / 热度 / 剧情)+API 权威源 | 电影趋势分析 / 推荐系统 / NLP 建模用
大数据·人工智能·python·深度学习·数据分析·数据集·数据清洗
七元权2 天前
论文阅读-Correlate and Excite
论文阅读·深度学习·注意力机制·双目深度估计