神经网络搭建实战与Sequential的使用

一、需要处理的图像

二、对上述图片用代码表示:

复制代码
import torch
from torch import nn
from torch.nn import Conv2d, MaxPool2d, Flatten, Linear


class SUN(nn.Module):
    def __init__(self):
        super(SUN, self).__init__()
        self.conv1 = Conv2d(3, 32, 5, padding=2)
        self.maxpool1 = MaxPool2d(2)
        self.conv2 = Conv2d(32, 32, 2,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


sun = SUN()
print(sun)

# 写完网络检查网络的正确性,因为即使改变其中的一些参数,该网络还是能够正常的运行,所以需要检验
# 创建一个假象的输入
input = torch.ones((64,3,32,32))
output = sun(input)
print(output.shape)

实现的结果:

三、用 Sequential简化

但是,在class的使用中,频繁的写self.....是非常复杂,不简洁的,于是有了Sequential:

代码如下简洁:

复制代码
import torch
from torch import nn
from torch.nn import Conv2d, MaxPool2d, Flatten, Linear, Sequential


class SUN(nn.Module):
    def __init__(self):
        super(SUN, self).__init__()
        self.model1 = Sequential(
            Conv2d(3, 32, 5, padding=2),
            MaxPool2d(2),
            Conv2d(32, 32, 2, 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.model1(x)
        return x


sun = SUN()
print(sun)

# 写完网络检查网络的正确性,因为即使改变其中的一些参数,该网络还是能够正常的运行,所以需要检验
# 创建一个假象的输入
input = torch.ones((64,3,32,32))
output = sun(input)
print(output.shape)

实现的结果是一样的,但是,较为的简洁。

四、使用tensorboard可视化

复制代码
# 使用tensorboard来可视化:
writer = SummaryWriter("logs_seq")
writer.add_graph(sun, input)
writer.close()

注意,此处使用的是add_graph()。

tensorboard中的add_graph方法用于可视化ptorch模型的计算图。‌TensorBoard是一个强大的可视化工具,它允许用户以交互式的方式查看和理解模型的训练过程和结构。在PyTorch中,add_graph方法是SummaryWriter类的一个功能,它可以将PyTorch模型的计算图以图形化的形式展示出来。通过这种方法,用户可以直观地看到模型中各个操作之间的依赖关系,以及数据在模型中的流动情况。这对于理解模型的内部工作机制、调试模型以及优化模型设计都非常有帮助。

tensorboard显示不出来的问题:使用了下述语句查看:

python 复制代码
tensorboard --logdir =learningplan1/logs_seq

结果:

对其改正:加入端口6007

python 复制代码
tensorboard --logdir=learningplan1/logs_seq --port=6007

最终正确查看,注:双击可以打开网络:

输入,经过搭建的SUN网络到达输出。

通过双击网络模块,可查询相关的参数等:

网络搭建成功。

相关推荐
IT_Octopus1 小时前
【零基础入门 LLM 开发 · Day 13】:LangChain 的对话记忆——Message 对象版
人工智能·python·langchain
2603_965148112 小时前
社区与学习资源:从入门到精通的API选品学习路径
数据库·人工智能·python·学习·数据挖掘
CCblandy3 小时前
令牌桶在 0.9 倍负载超发 19%、固定窗口边界放行 20 个:四种限流算法同构实测
后端·python·算法·性能优化·架构
kaixin_啊啊4 小时前
【用于更准确 G×E 基因组预测的大规模作物数据集与基于深度学习的多模态融合框架】论文学习
人工智能·深度学习·学习
Cc.Y4 小时前
Java零基础入门:深入Java核心:文件IO与序列化全解
java·开发语言·python
拿本唠嗑AI研究4 小时前
本体工程实战指南:从建模到可维护的完整落地路径
java·人工智能·python·jena·ontology
deepseek234 小时前
AI 模型隐藏任意能力拆解:把加密神经网络塞进宿主权重,能力评估为什么在密码学上抓不到
人工智能·深度学习·神经网络·密码学·模型安全
Smoothcloud润云4 小时前
PyTorch推理服务模型热切换与失败回滚实战:降低版本更新中断
服务器·人工智能·pytorch·python·深度学习·gpu
jsjzsl24 小时前
递归自改进系统(RSI)的本质是自发对称破缺:智能爆炸有界—— AI研发切记盲目投入
人工智能·python·算法
梦帮科技4 小时前
Kali Linux Scapy 畸形报文构造学——深度解剖非法 TCP Flags 与反常序列号
linux·爬虫·神经网络·算法·数学建模·系统架构·模拟退火算法