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

Pytorch学习--神经网络--搭建小实战(手撕CIFAR 10 model structure)和 Sequential 的使用

一、Sequential 的使用方法

在手撕代码中进一步体现
torch.nn.Sequential
在这里插入图片描述

二、手撕 CIFAR 10 model structure

在这里插入图片描述
手撕代码:

import torch
from torch import nn
from torch.nn import Conv2d, MaxPool2d, Flatten, Linear
from torch.utils.tensorboard import SummaryWriter


class Mary(nn.Module):
    def __init__(self):
        super(Mary,self).__init__()
        self.conv1 = Conv2d(3,32,5,padding=2)
        self.maxpool1 = MaxPool2d(2)
        self.conv2 = Conv2d(32,32,5,padding=2)
        self.maxpool2 = MaxPool2d(2)
        self.conv3 = Conv2d(32,64,5,padding=2)
        self.maxpool3 = MaxPool2d(2)
        self.flatten = Flatten()
        self.linear1 = Linear(1024,64)
        self.linear2 = Linear(64,10)
    def forward(self,x):
        x = self.conv1(x)
        x = self.maxpool1(x)
        x = self.conv2(x)
        x = self.maxpool2(x)
        x = self.conv3(x)
        x = self.maxpool3(x)
        x = self.flatten(x)
        x = self.linear1(x)
        x = self.linear2(x)
        return x
Yorelee = Mary()
print(Yorelee)
# 检测
input = torch.ones((64,3,32,32))
output = Yorelee(input)
print(output.shape)  #如果是[64,10]即为正确

#用Tensorboard去检测
writer = SummaryWriter("logs")
writer.add_graph(Yorelee,input)
writer.close()

Tensorboard 输出:
在这里插入图片描述
使用nn.Sequential的代码:

import torch
from torch import nn
from torch.nn import Conv2d, MaxPool2d, Flatten, Linear
from torch.utils.tensorboard import SummaryWriter


class Mary(nn.Module):
    def __init__(self):
        super(Mary,self).__init__()
        # self.conv1 = Conv2d(3,32,5,padding=2)
        # self.maxpool1 = MaxPool2d(2)
        # self.conv2 = Conv2d(32,32,5,padding=2)
        # self.maxpool2 = MaxPool2d(2)
        # self.conv3 = Conv2d(32,64,5,padding=2)
        # self.maxpool3 = MaxPool2d(2)
        # self.flatten = Flatten()
        # self.linear1 = Linear(1024,64)
        # self.linear2 = Linear(64,10)
        self.model1 = nn.Sequential(
            Conv2d(3, 32, 5, padding=2),
            MaxPool2d(2),
            Conv2d(32, 32, 5, padding=2),
            MaxPool2d(2),
            Conv2d(32, 64, 5, padding=2),
            MaxPool2d(2),
            Flatten(),
            Linear(1024, 64),
            Linear(64, 10)
        )
    def forward(self,x):
        # x = self.conv1(x)
        # x = self.maxpool1(x)
        # x = self.conv2(x)
        # x = self.maxpool2(x)
        # x = self.conv3(x)
        # x = self.maxpool3(x)
        # x = self.flatten(x)
        # x = self.linear1(x)
        # x = self.linear2(x)
        x = self.model1(x)
        return x
Yorelee = Mary()
print(Yorelee)
# 检测
input = torch.ones((64,3,32,32))
output = Yorelee(input)
print(output.shape)  #如果是[64,10]即为正确

#用Tensorboard去检测
writer = SummaryWriter("logs")
writer.add_graph(Yorelee,input)
writer.close()

http://www.kler.cn/a/380034.html

相关文章:

  • 通讯学徒学习日记
  • 后端java——如何为你的网页设置一个验证码
  • CentOS9 Stream 设置禁用IPV6
  • 占地1.1万平,2亿投资的智能仓储系统:高架库、AGV、码垛机器人……
  • 华为云计算知识总结——及案例分享
  • js实现blob类型转化为excel文件
  • 网络爬虫的定义
  • [pdf,epub]105页《分析模式》漫谈合集01
  • 深入剖析卷积神经网络中的卷积核
  • django的一些文件
  • docker配置mysql
  • Qt聊天室项目
  • 【系统架构设计师(第2版)】目录
  • 深入解析 Linux initramfs:从基础到高级应用
  • python机器人Agent编程——实现一个机器人DH参数自动生成Agent(上)
  • 基于STM32设计的物联网火灾感知系统(259)
  • 数字IC中Verilog编码注意事项
  • 数据安全秘籍:500强企业的经典传输案例大揭秘
  • [QUIC] 版本协商
  • 重构代码之重复的观察数据
  • C语言用GNU源码编译建构系统工具(GNU BUILD SYSTEM)编译创建动态库
  • 微服务系列二:跨微服务请求优化,注册中心+OpenFeign
  • 输电线路绝缘子缺陷分割系统:轻松训练模式
  • 【matlab版】如何估算波形信号的幅值、频率与相位
  • Docker BUG排查
  • Docker 部署 Java 项目实践