news 2026/2/11 17:06:47

神经网络入门:从零开始构建你的第一个深度学习模型

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
神经网络入门:从零开始构建你的第一个深度学习模型

✨道路是曲折的,前途是光明的!

📝 专注C/C++、Linux编程与人工智能领域,分享学习笔记!

🌟 感谢各位小伙伴的长期陪伴与支持,欢迎文末添加好友一起交流!

    • 前言
    • 什么是神经网络?
      • 基本结构
    • 核心概念
      • 1. 神经元
      • 2. 激活函数
      • 3. 前向传播
    • PyTorch实战代码
      • 1. 定义神经网络
      • 2. 训练循环
    • 训练流程图
    • 损失函数的作用
    • 反向传播与梯度下降
    • 完整训练示例
    • 总结
    • 进一步学习方向

前言

神经网络是深度学习的基石,也是人工智能领域最激动人心的技术之一。本文将带你从零开始,理解神经网络的核心概念,并用代码实现一个简单的神经网络模型。

什么是神经网络?

神经网络是一种受人脑神经元结构启发的机器学习模型。它由相互连接的节点(神经元)组成,通过层层传递和处理信息来完成学习任务。

基本结构

Output Layer

Hidden Layer

Input Layer

输入特征1

输入特征2

输入特征3

神经元1

神经元2

神经元3

神经元4

输出1

输出2

核心概念

1. 神经元

每个神经元接收输入,通过权重和偏置计算,最后通过激活函数产生输出:

output = activation(Σ(input × weight) + bias)

2. 激活函数

激活函数引入非线性,使网络能够学习复杂的模式。

激活函数特点适用场景
ReLU计算简单,缓解梯度消失隐藏层首选
Sigmoid输出在0-1之间二分类输出层
Softmax输出概率分布多分类输出层

3. 前向传播

前向传播是数据从输入层流向输出层的过程。

输入数据

输入层

隐藏层1

隐藏层2

输出层

预测结果

PyTorch实战代码

1. 定义神经网络

importtorchimporttorch.nnasnnimporttorch.optimasoptim# 定义一个简单的全连接神经网络classSimpleNet(nn.Module):def__init__(self,input_size,hidden_size,num_classes):super(SimpleNet,self).__init__()# 第一层:输入层到隐藏层self.layer1=nn.Linear(input_size,hidden_size)self.relu=nn.ReLU()# 第二层:隐藏层到输出层self.layer2=nn.Linear(hidden_size,num_classes)defforward(self,x):out=self.layer1(x)out=self.relu(out)out=self.layer2(out)returnout# 初始化模型model=SimpleNet(input_size=784,hidden_size=128,num_classes=10)print(model)

2. 训练循环

# 定义损失函数和优化器criterion=nn.CrossEntropyLoss()optimizer=optim.Adam(model.parameters(),lr=0.001)# 训练循环num_epochs=10forepochinrange(num_epochs):forbatch_idx,(data,targets)inenumerate(train_loader):# 前向传播outputs=model(data)loss=criterion(outputs,targets)# 反向传播和优化optimizer.zero_grad()loss.backward()optimizer.step()print(f'Epoch [{epoch+1}/{num_epochs}], Loss:{loss.item():.4f}')

训练流程图

开始

初始化模型参数

获取训练数据批次

前向传播计算预测

计算损失

反向传播计算梯度

更新权重参数

是否完成所有epoch?

训练完成

损失函数的作用

损失函数衡量模型预测与真实值的差距:

# 常用损失函数示例# 1. 均方误差(回归任务)mse_loss=nn.MSELoss()# 2. 交叉熵(分类任务)cross_entropy=nn.CrossEntropyLoss()# 3. 二元交叉熵(二分类)bce_loss=nn.BCELoss()

反向传播与梯度下降

反向传播是训练神经网络的核心算法:

计算损失

计算输出层梯度

计算隐藏层梯度

计算输入层梯度

更新所有权重

完整训练示例

importtorchimporttorch.nnasnnfromtorch.utils.dataimportDataLoader,TensorDataset# 创建示例数据X=torch.randn(1000,20)# 1000个样本,20个特征y=torch.randint(0,2,(1000,))# 二分类标签# 创建数据加载器dataset=TensorDataset(X,y)train_loader=DataLoader(dataset,batch_size=32,shuffle=True)# 定义模型classBinaryClassifier(nn.Module):def__init__(self):super().__init__()self.network=nn.Sequential(nn.Linear(20,64),nn.ReLU(),nn.Dropout(0.2),nn.Linear(64,32),nn.ReLU(),nn.Linear(32,1),nn.Sigmoid())defforward(self,x):returnself.network(x)# 训练model=BinaryClassifier()optimizer=torch.optim.Adam(model.parameters(),lr=0.001)criterion=nn.BCELoss()forepochinrange(5):epoch_loss=0forX_batch,y_batchintrain_loader:optimizer.zero_grad()predictions=model(X_batch).squeeze()loss=criterion(predictions,y_batch.float())loss.backward()optimizer.step()epoch_loss+=loss.item()print(f'Epoch{epoch+1}, Average Loss:{epoch_loss/len(train_loader):.4f}')

总结

通过本文,我们学习了:

  1. 神经网络的基本结构和组成
  2. 前向传播和反向传播的原理
  3. 使用PyTorch构建和训练神经网络

进一步学习方向

  • CNN(卷积神经网络):图像处理领域
  • RNN/LSTM:序列数据处理
  • Transformer:自然语言处理
  • GAN(生成对抗网络):图像生成

神经网络的世界非常广阔,继续探索吧!


参考资料:

  • PyTorch官方文档
  • 《深度学习》- Ian Goodfellow
  • CS231n: 卷积神经网络课程

✍️ 坚持用清晰易懂的图解+可落地的代码,让每个知识点都简单直观

💡座右铭“道路是曲折的,前途是光明的!”

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/11 17:06:08

【Django毕设源码分享】基于Django的控糖食物推荐系统的设计与实现(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/2/11 17:05:39

【Django毕设源码分享】基于python的养老院健康跟踪系统分析与设计(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/2/11 16:54:28

【Django毕设全套源码+文档】基于django的控糖食物推荐系统的设计与实现(丰富项目+远程调试+讲解+定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/2/11 16:54:02

【Django毕设全套源码+文档】基于django的B_S架构的球类赛事发布和在线购票系统的设计与实现(丰富项目+远程调试+讲解+定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/2/11 16:53:26

网络安全之【蜜罐教程】零基础入门到精通【附Hfish】

网络安全之蜜罐 1.什么是蜜罐?2.原理是什么?3.蜜罐的分类4.研究现状5.蜜罐的缺点6.Hfish蜜罐的使用介绍 1.什么是蜜罐? 蜜罐是一种主动防御技术,通过主动的暴露一些漏洞、设置一些诱饵来引诱攻击者进行攻击,从而可以…

作者头像 李华
网站建设 2026/2/11 16:48:22

基于 Java 的台球比赛报名管理系统源码

以下是一个基于Java的台球比赛报名管理系统的完整源码实现方案,涵盖系统架构、核心功能、关键代码示例及部署方案:一、系统架构设计采用微服务架构,基于Spring Boot 3.2 Spring Cloud Alibaba 2022生态构建,支持高并发与弹性扩展…

作者头像 李华