news 2026/9/8 15:24:58

在PyTorch中搭建神经网络

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
在PyTorch中搭建神经网络

模板骨架:

所有自定义网络都遵循这套模板:

import torch from torch import nn # 1.定义网络类,继承nn.Module class MyNet(nn.Module): def __init__(self): super().__init__() # 必须调用父类构造函数 # --------在这里定义所有网络层/容器(Linear、ReLU、Sequential等)-------- # self.xxx = 层实例 def forward(self, x): # --------在这里写数据流动逻辑:输入x,经过各层计算,返回输出-------- # x = self.xxx(x) return x # 2.测试网络 if __name__ == '__main__': # 构造模拟输入数据 input_data = torch.randn(形状) net = MyNet() # 实例化网络 out = net(input_data) # 前向传播,自动调用forward print(out.shape)

搭建神经网络示例:

from torch import nn import torch class FullyConnectedNet(nn.Module): def __init__(self): super().__init__() self.layer = nn.Sequential( nn.Flatten(), # [batch, 1, 28, 28] -> [batch, 784] nn.Linear(28 * 28, 512), # 784 个像素点映射到 512 个隐藏特征 nn.ReLU(), # 增加非线性表达能力 nn.Linear(512, 256), # 继续提取更紧凑的隐藏特征 nn.ReLU(), nn.Linear(256, 128), nn.ReLU(), nn.Linear(128, 10), # 模型输出的原始分数(分数越高,说明模型当前越偏向哪个候选项) ) def forward(self, x): return self.layer(x) if __name__ == '__main__': data = torch.randn(1,1,28,28) net = FullyConnectedNet() output = net(data) print(output)

from torch import nnnn是什么

from torch import nn

torch是顶层大模块;nn是 torch 下面的一个子模块(module),全称torch.nn,专门用来搭建神经网络。

等价写法:

import torch nn = torch.nn # 完全一样

torch.nn 里面装了什么

里面全是神经网络相关的类、工具:

  1. 网络层类nn.Linearnn.Conv2dnn.Flattennn.ReLUnn.Sequential
  2. 模型基类nn.Module—— 所有网络 / 层都继承它
  3. 损失函数类nn.CrossEntropyLossnn.MSELoss
  4. 容器nn.Sequentialnn.ModuleListnn.ModuleDict
  5. 归一化、dropout、embedding`等等

语法拆解

from torch import nn # 从 torch 包中导入 nn 子模块,当前文件就可以直接写 nn.xxx,不用写 torch.nn.xxx
  • nn模块对象,不是类,不是函数。
  • nn.Sequential:访问 nn 模块内部的Sequential
  • nn.Sequential(...):实例化这个类,得到一个网络层对象

层级关系梳理

torch (顶层包) └── nn 子模块(torch.nn) ├── nn.Module 【基类】 ├── nn.Sequential 【类,继承Module】 ├── nn.Linear 【全连接层类】 ├── nn.ReLU 【激活类】 └── nn.CrossEntropyLoss 损失类

重点: 所有层nn.Linear()nn.ReLU()nn.Sequential()都是实例化类,返回的实例全部继承自nn.Module。 只有继承nn.Module的对象,放到模型里面,参数才会被自动管理(net.parameters()、cuda、保存加载模型)。

容易混淆对比

代码是什么
torch最顶层包
nntorch.nn,神经网络子模块
nn.Module,所有网络组件的父类
nn.Sequential,Module 的子类
nn.Sequential(...)实例化,得到 Module 实例对象
self.layer = nn.Sequential(...)self.layer是模型的属性,存这个 Module 实例

小坑提醒

self.layer = nn.Sequential # ❗错误!没有括号,只是把类本身赋值,没有创建对象 self.layer = nn.Sequential() # ✅加括号:实例化生成对象
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/8 15:24:56

洛谷题--三位数排序

题目描述给出三个整数 a,b,c(0≤a,b,c≤100),要求把这三位整数从小到大排序。输入格式输入三个整数 a,b,c,以空格隔开。输出格式输出一行,三个整数,表示从小到大排序后的结果。初始版本import java.util.Scanner; public class Ma…

作者头像 李华
网站建设 2026/9/8 15:24:35

亲测有效的9款论文写作工具:从文献管理到AI润色全流程提效

写论文这事,很多学弟学妹一上来就问:有没有那种“一键生成全文”的工具,把题目丢进去,参考文献、正文、结论全出来,最好格式还是学校要求的。我实话实说,真没见过哪个正经工具能做到这一步,能做…

作者头像 李华
网站建设 2026/9/8 15:24:13

2026 普通 Python 开发转型 AI Agent:学习清单与面试地图

这两年问"要不要从 Python 转 AI"的人特别多,知乎上、技术群里、朋友圈里到处都是。这个问题本身问歪了。 市场真正缺的,不是"会调用大模型 API 的人",而是能把大模型、工具、数据、业务系统组织成可靠软件的人。前者写两天 Demo 就会了,后者要补一整…

作者头像 李华
网站建设 2026/9/8 15:23:01

零基础写论文✅全程不用求人!思梦航 AI 保姆级全流程教程

很多本科生在校期间并没有系统学习过论文写作😭。不会定选题、搜集文献犯难、降重一头雾水,格式调不好,答辩不知道怎么应答,全程自己瞎摸索,稿子反复被导师打回修改。 其实本科毕业论文不用闭门硬啃。找对合适的辅助工…

作者头像 李华
网站建设 2026/9/8 15:21:03

卷积神经网络实现手写数字识别:PyTorch实战与实验报告指南

简介:面向机器学习初学者和深度学习课程学生的一份完整实验资源,围绕手写数字识别这一经典分类任务,采用PyTorch框架搭建卷积神经网络(CNN),并在测试集上达到99%的准确率,能够帮助使用者理解从数…

作者头像 李华