PyTorch——搭建小实战和Sequential的使用(7)

news2025/6/7 14:41:08


import torch
from torch import nn
from torch.nn import Conv2d, MaxPool2d, Flatten, Linear

class TY(nn.Module):
    def __init__(self):
        """
        初始化TY卷积神经网络模型
        模型结构:3层卷积+池化,2层全连接
        设计目标:处理32x32像素的RGB图像分类任务
        """
        # 调用父类构造函数
        super(TY, self).__init__()
        
        # 卷积层1: 输入3通道(RGB),输出32通道
        # 5x5卷积核,padding=2保持特征图尺寸不变
        self.conv1 = Conv2d(3, 32, 5, padding=2)
        # 最大池化层1: 2x2窗口,步长2,尺寸减半
        self.maxpool1 = MaxPool2d(2)
        
        # 卷积层2: 输入32通道,输出32通道
        self.conv2 = Conv2d(32, 32, 5, padding=2)
        # 最大池化层2
        self.maxpool2 = MaxPool2d(2)
        
        # 卷积层3: 输入32通道,输出64通道
        # 增加通道数提取更复杂特征
        self.conv3 = Conv2d(32, 64, 5, padding=2)
        # 最大池化层3
        self.maxpool3 = MaxPool2d(2)
        
        # 展平多维张量为一维向量
        self.flatten = Flatten()
        
        # 全连接层1: 输入1024维,输出64维
        # 1024 = 64通道 x 4x4特征图(经过3次池化后尺寸为32→16→8→4)
        self.Linear1 = Linear(1024, 64)
        # 全连接层2: 输入64维,输出10维(对应10个分类类别)
        self.Linear2 = Linear(64, 10)

    def forward(self, x):
        """
        定义模型前向传播过程
        参数:
            x: 输入张量,形状为[batch_size, 3, 32, 32]
        返回:
            x: 输出张量,形状为[batch_size, 10]
        """
        # 第一层卷积+ReLU激活+池化
        # 输入: [batch, 3, 32, 32] → 输出: [batch, 32, 16, 16]
        x = self.conv1(x)
        x = self.maxpool1(x)
        
        # 第二层卷积+ReLU激活+池化
        # 输入: [batch, 32, 16, 16] → 输出: [batch, 32, 8, 8]
        x = self.conv2(x)
        x = self.maxpool2(x)
        
        # 第三层卷积+ReLU激活+池化
        # 输入: [batch, 32, 8, 8] → 输出: [batch, 64, 4, 4]
        x = self.conv3(x)
        x = self.maxpool3(x)
        
        # 展平操作
        # 输入: [batch, 64, 4, 4] → 输出: [batch, 64*4*4=1024]
        x = self.flatten(x)
        
        # 全连接层1 + ReLU激活
        # 输入: [batch, 1024] → 输出: [batch, 64]
        x = self.Linear1(x)
        
        # 全连接层2 (分类层)
        # 输入: [batch, 64] → 输出: [batch, 10]
        x = self.Linear2(x)
        
        return x

# 创建模型实例
ty = TY()
# 打印模型结构
print(ty)

# 创建测试输入:64张32x32的RGB图像(全1值)
input = torch.ones((64, 3, 32, 32))
# 执行前向传播
output = ty(input)
# 打印输出形状,应为[64, 10]
print(f"输出形状: {output.shape}")

torch.ones用法


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

# 定义TY卷积神经网络模型,继承自PyTorch的nn.Module
class TY(nn.Module):
    def __init__(self):
        # 调用父类构造函数
        super(TY,self).__init__()
        # 使用Sequential容器构建网络,按顺序堆叠各层
        self.model1 = Sequential(
            # 第一个卷积层:3通道输入,32通道输出,5x5卷积核,padding=2保持尺寸
            Conv2d(3,32,5,padding=2),
            # 第一个池化层:2x2窗口,下采样至16x16
            MaxPool2d(2),
            # 第二个卷积层:32通道输入,32通道输出
            Conv2d(32,32,5,padding=2),
            # 第二个池化层:下采样至8x8
            MaxPool2d(2),
            # 第三个卷积层:32通道输入,64通道输出
            Conv2d(32,64,5,padding=2),
            # 第三个池化层:下采样至4x4
            MaxPool2d(2),
            # 展平多维张量为一维向量:64x4x4=1024
            Flatten(),
            # 第一个全连接层:1024维输入,64维输出
            Linear(1024,64),
            # 第二个全连接层:64维输入,10维输出(对应10个分类)
            Linear(64, 10),
        )

    def forward(self, x):
        # 定义前向传播路径
        x = self.model1(x)
        return x

# 创建模型实例
ty = TY()
# 打印模型结构
print(ty)
# 创建测试输入:64个样本,3通道,32x32尺寸
input = torch.ones((64,3,32,32))
# 执行前向传播
output = ty(input)
# 打印输出形状,验证网络结构正确性
print(output.shape)

# 创建TensorBoard日志写入器,保存日志到'./logs_seq'目录
writer = SummaryWriter("./logs_seq")
# 将模型结构写入TensorBoard,便于可视化分析
writer.add_graph(ty,input)
# 关闭写入器,释放资源
writer.close()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2400893.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python 开发效率秘籍:PyCharm、VS Code 与 Anaconda 配置与实战全解

目录 一、IDE(集成开发环境)是什么?二、Python IDE有哪些,哪款适合初学者?三、Visual Studio Code下载和安装教程3.1 VS Code下载和安装3.2 VS Code运行Python程序 四、PyCharm下载和安装教程4.1 PyCharm下载4.2 PyCharm安装4.3 运行PyCharm4.4 创建工程…

大话软工笔记—组合要素1之要素

1. 要素来源 对象是要素的来源,要素是从对象分解而来的。可将对象分为优化类和非优化类,如下图所示。 对象分类图 2. 要素的概念 2.1 要素的定义 要素,是构成事物必不可少的因素,要素的集合体构成了对象。 2.2 要素的内容 要…

平台化 LIMS 系统架构 跨行业协同与资源共享的实现路径

在科技快速发展的今天,质检行业正面临着效率、合规和数据安全的多重挑战。新一代质检 LIMS 系统以智能化与平台化为核心,为实验室管理提供了全新的解决方案。 一、智能化:从数据采集到分析的全流程升级 传统质检流程中,人工数据录…

RedisTemplate查询不到redis中的数据问题(序列化)

RedisTemplate查询不到redis中的数据问题(序列化) 一.问题描述 存入Redis中的值取出来却为null,问题根本原因就是RedisTemplate和StringRedisTemplate的序列化问题、代码示例: SpringBootTest class Redis02SpringbootApplicationTests {Autowiredprivate RedisTe…

SkyWalking如何实现跨线程Trace传递

一、概述 SkyWalking 的中构建 Trace 信息时会借助 ThreadLocal来存储一些上下文信息,当遇到跨线程的时候,如果 Trace 的上下文信息没有传递到新线程的ThreadLocal 中,那么链路就断开了。那么SkyWalking是如何解决这个问题的呢? …

使用 Spring Boot 3.3 和 JdbcTemplate 操作 MySQL 数据库

在现代的 Java 应用开发中,Spring Boot 提供了强大的工具来简化数据库操作。JdbcTemplate 是 Spring 提供的一个核心类,用于简化 JDBC 操作,减少样板代码。本文将介绍如何在 Spring Boot 3.3 项目中使用 JdbcTemplate 来操作 MySQL 数据库&am…

Axure高保真LayUI框架 V2.6.8元件库

点击下载《Axure高保真LayUI框架 V2.6.8元件库》 原型效果:https://axhub.im/ax9/bf36e6dd89bc4c9f/#g1 摘要 本文详细阐述了在 Axure 环境下打造的一套高度还原 LayUI 框架的组件元件集。通过对 LayUI 框架组件的深入剖析,结合 Axure 的强大功能&…

通讯录实现(Linux+Cpp)

通讯录实现(LinuxCpp) 产品底层思考: 人员如何存储 -> 链表 (增删改 但是排序不适合) 文件存储 -> 人员数据的格式 name:xxx,phone:xxx 人员信息 -> 姓名、电话 引出2 name: xxx,phone: xxx,age: xxx,addr…

质检 LIMS 系统数据防护指南 三级等保认证与金融级加密方案设计

面对频发的数据泄露事件,企业亟需构建一套 “防得住、追得回、打得赢” 的防护体系。质检 LIMS 系统通过三级等保认证与金融级加密的结合,为这一目标提供了可行路径。 一、金融级加密:构建数据防护的 “铜墙铁壁” 金融级加密技术通过协议加密…

Spring Boot 从Socket 到Netty网络编程(上):SOCKET 基本开发(BIO)与改进(NIO)

前言 无论是软件还是硬件的本质都是要解决IO问题(输入、输出),再说回网络编程本质上都是基于TCP/UP的开发,socket是在此基础上做的扩展与封装,而Netty又是对socket做的封装。本文旨在通过相关案例对socket进行探讨。 一…

79. Word Search

题目描述 79. Word Search 回溯 代码一&#xff0c;使用used数组 class Solution {vector<pair<int,int>> directions{{0,1},{0,-1},{1,0},{-1,0}};vector<vector<bool>> used; public:bool exist(vector<vector<char>>& board, st…

结构性设计模式之Facade(外观)设计模式

结构性设计模式之Facade&#xff08;外观&#xff09;设计模式 前言&#xff1a; 外观模式&#xff1a;用自己的话理解就是用户看到是一个总体页面&#xff0c;比如xx报名系统页面。里面有历年真题模块、报名模块、教程模块、首页模块… 做了一个各个模块的合并&#xff0c;对…

ICML 2025 Spotlight | 机器人界的「Sora」!让机器人实时进行未来预测和动作执行!

标题&#xff1a;Video Prediction Policy: A Generalist Robot Policy with Predictive Visual Representations 作者&#xff1a;Yucheng Hu, Yanjiang Guo, Pengchao Wang, Xiaoyu Chen, Yen-Jen Wang, Jianke Zhang, Koushil Sreenath, Chaochao Lu, Jianyu Chen 机构&am…

AI生态警报:MCP协议风险与应对指南(下)——MCP Host安全

AI生态警报&#xff1a;MCP协议风险与应对指南&#xff08;上&#xff09;——架构与供应链风险https://blog.csdn.net/WangsuSecurity/article/details/148335401?sharetypeblogdetail&sharerId148335401&sharereferPC&sharesourceWangsuSecurity&spm1011.24…

基于VLC的Unity视频播放器(四)

上篇文章中提到的问题 播放某个m3u8地址时会嘎掉&#xff0c;想办法解决了一下&#xff0c;很粗暴的&#xff0c;先SetFormat&#xff0c;再Stop&#xff0c;最后再Play&#xff0c;能用…… if (player ! null && player.GetSize() 0) {player.GetSize((w, h) >…

pixel刷入Android15 userdebug版本

最近入手一个pixel7,想着刷个userdebug版本&#xff0c;就不用模拟器调试开发了&#xff0c;结果按照网上的教程&#xff0c;每次刷机后都是卡在goole logo界面&#xff0c;卡了一天多我才找到问题所在&#xff0c;想着记录下&#xff0c;给自己做个备份。 1. 前期准备&#x…

C# 一个解决方案放一个dll项目,一个dll测试项目 ,调试dll项目的源码

一个解决方案&#xff08;sln&#xff09;中放入2个项目(project&#xff0c;通常是一个文件夹)&#xff0c;一个dll项目&#xff0c;一个dll测试项目 右键dll测试项目&#xff0c;设为启动项目。 在dll测试项目添加引用 1&#xff09;右键测试项目 → 添加 → 引用 → 项目…

【PmHub面试篇】PmHub 整合 TransmittableThreadLocal(TTL)缓存用户数据面试专题解析

你好&#xff0c;欢迎来到本次关于PmHub整合TransmittableThreadLocal (TTL)缓存用户数据的面试系列分享。在这篇文章中&#xff0c;我们将深入探讨这一技术领域的相关面试题预测。若想对相关内容有更透彻的理解&#xff0c;强烈推荐参考之前发布的博文&#xff1a;【PmHub后端…

unity随机生成未知符号教程

目录 前言方法1方法2脚本后言示例代码 前言 在某些游戏中&#xff0c;有一些让人感到意味不明的未知符号&#xff0c;例如在游戏《巴别塔圣歌》中&#xff0c;就有这样一些能让人在初次就看不懂的未知符号。 或者在其他时候&#xff0c;这些未知符号如果跟粒子系统结合在一起的…

基于RK3576+FPGA+AI工业控制器的工地防护检测装备解决方案

1.2.1 工地防护检测技术研究现状 在建筑施工的过程中&#xff0c;工人被要求暴露在危险的环境中作业 [2]。因此&#xff0c;防护装备 对于工人的安全与健康具有非常重要的意义[3]。工地工人必须佩戴适当的防护装备&#xff0c; 以降低意外伤害的风险。在过去的几十年里&#x…