一起深度学习

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)

网络图如下:

相关推荐
ziwu43 分钟前
植物病害识别系统Python+卷积神经网络算法+图像识别+人工智能项目+深度学习项目+计算机课设项目+Django网页界面
人工智能·深度学习·图像识别
大耳朵爱学习5 小时前
掌握Transformer之注意力为什么有效
人工智能·深度学习·自然语言处理·大模型·llm·transformer·大语言模型
qq_15321452645 小时前
【2023工业异常检测文献】SimpleNet
图像处理·人工智能·深度学习·神经网络·机器学习·计算机视觉·视觉检测
B站计算机毕业设计超人7 小时前
计算机毕业设计Python+Flask微博情感分析 微博舆情预测 微博爬虫 微博大数据 舆情分析系统 大数据毕业设计 NLP文本分类 机器学习 深度学习 AI
爬虫·python·深度学习·算法·机器学习·自然语言处理·数据可视化
羊小猪~~7 小时前
深度学习基础案例5--VGG16人脸识别(体验学习的痛苦与乐趣)
人工智能·python·深度学习·学习·算法·机器学习·cnn
AI大模型知识分享11 小时前
Prompt最佳实践|如何用参考文本让ChatGPT答案更精准?
人工智能·深度学习·机器学习·chatgpt·prompt·gpt-3
小言从不摸鱼13 小时前
【AI大模型】ChatGPT模型原理介绍(下)
人工智能·python·深度学习·机器学习·自然语言处理·chatgpt
酱香编程,风雨兼程17 小时前
深度学习——基础知识
人工智能·深度学习
#include<菜鸡>18 小时前
动手学深度学习(pytorch土堆)-04torchvision中数据集的使用
人工智能·pytorch·深度学习
拓端研究室TRL18 小时前
TensorFlow深度学习框架改进K-means聚类、SOM自组织映射算法及上海招生政策影响分析研究...
深度学习·算法·tensorflow·kmeans·聚类