FNN vs CNN 完全对比指南

1. FNN(前馈神经网络)是什么?

1.1 基本概念

FNN(Feedforward Neural Network),也叫全连接神经网络(Fully Connected Neural Network)多层感知机(MLP, Multi-Layer Perceptron),是最基础、最经典的神经网络结构。

1.2 核心特点

“信息单向流动,层层全连接”

输入层 隐藏层1 隐藏层2 输出层 ○─────────────○─────────────○─────────────○ ○─────────────○─────────────○─────────────○ ○─────────────○─────────────○ ○─────────────○─────────────○ ○ ○

1.3 FNN 的结构

组成部分说明
输入层接收原始特征数据
隐藏层一层或多层,进行特征变换
输出层输出最终预测结果
连接方式相邻层之间全连接(每个神经元与下一层所有神经元相连)

1.4 数学表达

对于一个隐藏层:

h=σ(W⋅x+b)h = \sigma(W \cdot x + b)h=σ(Wx+b)

其中:

  • xxx:输入向量
  • WWW:权重矩阵
  • bbb:偏置向量
  • σ\sigmaσ:激活函数(如 ReLU、Sigmoid)
  • hhh:隐藏层输出

1.5 FNN 示例代码

importtorchimporttorch.nnasnnclassFNN(nn.Module):def__init__(self,input_size,hidden_size,output_size):super(FNN,self).__init__()self.fc1=nn.Linear(input_size,hidden_size)# 全连接层1self.relu=nn.ReLU()# 激活函数self.fc2=nn.Linear(hidden_size,hidden_size)# 全连接层2self.fc3=nn.Linear(hidden_size,output_size)# 输出层defforward(self,x):x=self.fc1(x)x=self.relu(x)x=self.fc2(x)x=self.relu(x)x=self.fc3(x)returnx# 创建模型model=FNN(input_size=784,hidden_size=256,output_size=10)

2. CNN(卷积神经网络)是什么?

2.1 基本概念

CNN(Convolutional Neural Network)是专门为处理网格状数据(如图像)设计的神经网络,通过卷积操作提取局部特征。

2.2 核心特点

“局部连接,权值共享,层次化特征提取”

2.3 CNN 的核心组件

2.3.1 卷积层(Convolutional Layer)

使用卷积核(Filter/Kernel)在输入上滑动,提取局部特征:

输入图像 (5x5) 卷积核 (3x3) 特征图 (3x3) ┌─┬─┬─┬─┬─┐ ┌─┬─┬─┐ ┌─┬─┬─┐ │1│1│1│0│0│ │1│0│1│ │4│3│4│ ├─┼─┼─┼─┼─┤ * ├─┼─┼─┤ = ├─┼─┼─┤ │0│1│1│1│0│ │0│1│0│ │2│4│3│ ├─┼─┼─┼─┼─┤ ├─┼─┼─┤ ├─┼─┼─┤ │0│0│1│1│1│ │1│0│1│ │2│3│4│ ├─┼─┼─┼─┼─┤ └─┴─┴─┘ └─┴─┴─┘ │0│0│1│1│0│ ├─┼─┼─┼─┼─┤ │0│1│1│0│0│ └─┴─┴─┴─┴─┘
2.3.2 池化层(Pooling Layer)

降低特征图的空间尺寸,减少参数:

  • 最大池化(Max Pooling):取区域内最大值
  • 平均池化(Average Pooling):取区域内平均值
输入 (4x4) 最大池化 (2x2) 输出 (2x2) ┌─┬─┬─┬─┐ ┌───┬───┐ ┌─┬─┐ │1│3│2│4│ │ │ │ │4│6│ ├─┼─┼─┼─┤ → ├───┼───┤ = ├─┼─┤ │5│4│1│6│ │ │ │ │8│4│ ├─┼─┼─┼─┤ └───┴───┘ └─┴─┘ │7│8│3│2│ ├─┼─┼─┼─┤ │1│2│4│3│ └─┴─┴─┴─┘
2.3.3 全连接层(Fully Connected Layer)

在 CNN 的最后,通常会接几层全连接层进行分类或回归。

2.4 CNN 示例代码

importtorchimporttorch.nnasnnclassCNN(nn.Module):def__init__(self):super(CNN,self).__init__()# 卷积层self.conv1=nn.Conv2d(1,32,kernel_size=3,padding=1)self.conv2=nn.Conv2d(32,64,kernel_size=3,padding=1)# 池化层self.pool=nn.MaxPool2d(2,2)# 全连接层self.fc1=nn.Linear(64*7*7,128)self.fc2=nn.Linear(128,10)self.relu=nn.ReLU()defforward(self,x):# 卷积 + 激活 + 池化x=self.pool(self.relu(self.conv1(x)))# 28x28 -> 14x14x=self.pool(self.relu(self.conv2(x)))# 14x14 -> 7x7# 展平x=x.view(-1,64*7*7)# 全连接x=self.relu(self.fc1(x))x=self.fc2(x)returnx# 创建模型model=CNN()

3. FNN vs CNN 核心区别 ⚔️

3.1 对比总览表

特性FNN(前馈神经网络)CNN(卷积神经网络)
连接方式全连接局部连接 + 全连接
权值共享❌ 无✅ 有(卷积核共享)
参数数量非常多相对较少
空间结构不保留保留空间信息
平移不变性❌ 无✅ 有
主要应用表格数据、简单任务图像、视频、信号处理
输入形式一维向量多维张量(如图像)

3.2 详细对比

🔗 3.2.1 连接方式

FNN - 全连接

每个神经元与下一层的【所有】神经元相连 输入 (4个) 隐藏层 (3个) ○──────────────○ ○──────────────○ ○──────────────○ ○ 连接数 = 4 × 3 = 12

CNN - 局部连接

每个神经元只与输入的【局部区域】相连 输入 (5个) 隐藏层 (3个) ○───○ ○───┼───○ ○───┼───┼───○ ○───┼───○ ○───○ 每个输出只连接3个输入(卷积核大小=3)
3.2.2 参数数量对比

假设处理一张224×224×3的彩色图像:

FNN

输入维度 = 224 × 224 × 3 = 150,528 假设第一个隐藏层有 1000 个神经元 参数数量 = 150,528 × 1000 = 150,528,000

CNN

使用 32 个 3×3 的卷积核 参数数量 = 3 × 3 × 3 × 32 = 864

差距巨大!这就是为什么 CNN 更适合处理图像!💡

3.2.3 权值共享

FNN:每个连接都有独立的权重

CNN:同一个卷积核在整个输入上滑动,共享权重

CNN 权值共享示意: 同一个卷积核 [w1, w2, w3] 在不同位置使用: 位置1: [x1, x2, x3] × [w1, w2, w3] = y1 位置2: [x2, x3, x4] × [w1, w2, w3] = y2 位置3: [x3, x4, x5] × [w1, w2, w3] = y3 权重 w1, w2, w3 被共享!
3.2.4 空间信息保留

FNN

  • 输入必须展平成一维向量
  • 丢失空间结构信息
  • 相邻像素的关系被破坏
图像 (3×3): 展平后: ┌─┬─┬─┐ │1│2│3│ → [1,2,3,4,5,6,7,8,9] ├─┼─┼─┤ │4│5│6│ 空间关系丢失! ├─┼─┼─┤ │7│8│9│ └─┴─┴─┘

CNN

  • 保持输入的空间结构
  • 保留空间信息
  • 能够捕捉局部模式
3.2.5 平移不变性

平移不变性:无论目标出现在图像的哪个位置,都能被识别。

FNN:❌ 没有平移不变性

  • 如果训练时猫在左边,测试时猫在右边,可能识别失败

CNN:✅ 具有平移不变性

  • 卷积核在整个图像上滑动
  • 无论特征在哪里,都能被检测到
CNN 平移不变性示意: 图像1: 猫在左边 图像2: 猫在右边 ┌─────────────┐ ┌─────────────┐ │ 🐱 │ │ 🐱 │ │ │ │ │ └─────────────┘ └─────────────┘ 同一个"猫特征检测器"(卷积核)都能检测到!

4. 形象类比

让我用一个生动的类比来帮助你理解!

4.1 FNN 像"全局扫描仪"

想象你要识别一张图片:

  • FNN 会把整张图片一次性看完
  • 每个像素都与每个神经元相连
  • 就像用一个巨大的眼睛同时看所有细节
  • 缺点:参数太多,容易过拟合,不理解局部结构

4.2 CNN 像"放大镜检查员"

  • CNN 用一个小"放大镜"(卷积核)逐步扫描图片
  • 先找边缘、纹理等低级特征
  • 再组合成眼睛、鼻子等中级特征
  • 最后识别出整个物体
  • 优点:参数少,能理解局部结构,有层次感
CNN 的层次化特征提取: 第1层: 检测边缘、线条 ╱ ╲ │ ─ 第2层: 检测纹理、角点 ┌┐ └┘ ∠ 第3层: 检测部件 👁️ 👃 👄 第4层: 检测整体 😺 🐶 🚗

5. 什么时候用 FNN?什么时候用 CNN?

5.1 使用 FNN 的场景

场景示例
表格数据用户特征、销售数据、金融数据
低维数据特征数量较少的数据
无空间结构数据没有空间或时序关系
简单任务简单的分类或回归
作为其他网络的一部分CNN、RNN 的最后几层

5.2 使用 CNN 的场景

场景示例
图像处理图像分类、目标检测、图像分割
视频分析动作识别、视频分类
信号处理语音识别、心电图分析
自然语言处理文本分类(1D CNN)
任何有局部模式的数据基因序列、时间序列

6. 总结

6.1 一句话总结

网络一句话描述
FNN最基础的神经网络,全连接结构,适合处理表格数据
CNN专为网格数据设计,通过卷积提取局部特征,适合图像处理

6.2 关系图

神经网络家族: 神经网络 │ ┌──────────────┼──────────────┐ │ │ │ FNN CNN RNN (前馈神经网络) (卷积神经网络) (循环神经网络) │ │ │ 表格数据 图像数据 序列数据

6.3 记忆口诀

FNN 全连接,参数多又密, 表格数据它最行,图像处理不给力。 CNN 卷积核,局部连接省参数, 权值共享真厉害,图像识别第一名!

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

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

相关文章

【课程设计/毕业设计】基于python-CNN卷积神经网络对蔬菜识别基于深度学习python-CNN卷积神经网络对蔬菜识别

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

图搜商品API的应用场景|技术选型要点

一、图搜商品API的应用场景图搜商品 API 的核心价值是通过图片特征匹配商品信息,打通 “视觉输入→商品识别→交易 / 服务转化” 的链路,其应用场景覆盖电商、社交、零售、二手交易等多个领域,以下是具体落地场景及说明:1. 电商平…

PM2 是什么?一篇讲清 Node.js 进程管理器的文章

在 Node.js 应用部署到服务器之后,开发者很快会遇到几个现实问题: 服务挂了怎么办?服务器重启后应用如何自动恢复?如何管理多个 Node.js 服务?如何查看日志、监控运行状态? PM2(Process Manager…

华为OD机考双机位C卷 - 书籍叠放(Java Python JS C/C++ GO )

最新华为OD机试 真题目录:点击查看目录 华为OD面试真题精选:点击立即查看 华为OD机考双机位C卷 - 书籍叠放 题目描述 书籍的长、宽都是整数对应(l,w)。如果书A的长宽度都比B长宽大时,则允许将B排列放在A上面。 现在有一组规格的书籍&am…

算法题 按奇偶排序数组 II

922. 按奇偶排序数组 II 问题描述 给定一个非负整数数组 nums,其中一半整数是奇数,另一半是偶数。 你需要对数组进行重排序,使得对于所有偶数索引 i,nums[i] 是偶数;对于所有奇数索引 i,nums[i] 是奇数。 返…

计算机毕业设计springboot博物馆藏品管理系统 基于SpringBoot的文博资产数字化运营平台 SpringBoot驱动的博物馆珍藏智慧管护系统

计算机毕业设计springboot博物馆藏品管理系统 (配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。当库房里的宋瓷、青铜、书画越积越多,纸质台账却开始“掉链子”&#x…

鸿蒙ArkTS开发实战-从零打造高可用待办事项App【QuickTodo】

鸿蒙ArkTS开发实战:从零打造高可用待办事项App【QuickTodo】 随着鸿蒙生态的迅速发展,越来越多的开发者开始关注鸿蒙设备的应用开发。在这一背景下,ArkTS成为鸿蒙应用开发的首选语言,其声明式UI、强类型校验以及跨设备适配能力&a…

计算机毕业设计springboot博物馆预约管理系统 基于SpringBoot的文博场馆分时预约平台 SpringBoot驱动的智慧博物馆访客预约与票务系统

计算机毕业设计springboot博物馆预约管理系统 (配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。当“排队两小时,看展十分钟”成为常态,博物馆门口的长龙不仅…

深度调优:在 GNN 涡轮风扇发动机寿命预测中,学习率调度器如何决定模型生死?

前言:为什么学习率是 RUL 预测的“脉搏”? 在处理 NASA C-MAPSS 这样复杂的时间序列空间图结构数据时,我们通常会构建复杂的模型(如时空图卷积网络 ST-GCN 或图注意力网络 GAT)。然而,即使你有最完美的模型…

大数据领域中 Eureka 的服务注册与发现的容灾备份方案

大数据领域中 Eureka 的服务注册与发现的容灾备份方案关键词:大数据、Eureka、服务注册与发现、容灾备份方案、高可用性摘要:在大数据领域,服务的注册与发现是构建分布式系统的关键环节,Eureka 作为 Netflix 开源的服务注册与发现…

某程旅行小程序爬虫技术解析与实战案例

一、小程序爬虫核心技术认知 1. 小程序与传统 Web 爬虫的核心差异 传统 Web 爬虫主要针对 PC 端或移动端网页,基于 HTML 解析、Cookie 维持、HTTP/HTTPS 请求模拟即可完成大部分数据抓取工作。而小程序爬虫的核心差异体现在三个方面: 传输协议与数据格式…

当代人 “最放不下的前任”

1️⃣ 明明知道吃了胖,却还是忍不住想点那家外卖🍟2️⃣ 一直深信能自律,是我做过最自欺欺人的事⏰3️⃣ 嘴上说着要省钱,手却诚实点开购物车🛒4️⃣ 别人问起熬不熬夜,我总说早就早睡,其实在刷…

Python系列Bug修复|如何解决 pip install 安装报错 ModuleNotFoundError: No module named ‘torchaudio’ 问题

摘要 本文聚焦pip install安装torchaudio后(或导入torchaudio时)出现的ModuleNotFoundError: No module named torchaudio报错,该问题核心是Python解释器在当前运行环境的模块查找路径(sys.path)中找不到torchaudio模…

算法题 和相同的二元子数组

930. 和相同的二元子数组 问题描述 给你一个二元数组 nums 和一个整数 goal,请你统计并返回有多少个非空连续子数组的和等于 goal。 示例: 输入: nums [1,0,1,0,1], goal 2 输出: 4 解释: 有4个满足要求的子数组: [1,0,1], [1,0,1,0], [0,1,0,1], [1,0…

【毕业设计】基于深度学习卷积神经网络天上飞的识别基于python-CNN深度学习卷积神经网络天上飞的识别

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

计算机毕业设计springboot财务管理系统 基于SpringBoot的企业财务一体化运营平台 SpringBoot驱动的智能记账与资金管控系统

计算机毕业设计springboot财务管理系统(配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。手工做账、Excel满天飞、审批靠签字,月底关账夜夜通宵?把凭证、发票…

AI学习笔记整理(45)——大模型数据读取技术与模型部署

数据读取技术 大模型中的数据读取技术涉及从多样化数据源高效获取和加载数据,是模型训练与推理的基础环节。以下从数据源类型、关键技术方法及工具实践等方面进行说明。 ‌数据源类型与采集方法:‌ 大模型训练数据主要来源于结构化与非结构化数据源。结…

计算机深度学习毕设实战-基于python-CNN机器学习卷积神经网络对蔬菜识别基于python-CNN卷积神经网络对蔬菜识别

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

江苏硕晟LIMS:全力响应资质认定政策,打造生态环境监测信息管理典范

政策背景与核心要求当下,生态环境监测作为生态治理的核心支撑,其重要性愈发凸显。检验检测机构资质认定生态环境监测机构知识库所提出的各项要求,已成为规范行业发展、保障监测质量的关键准则,其中第十七条更是针对监测机构使用信…

Python系列Bug修复|如何解决 pip install 安装报错 ModuleNotFoundError: No module named ‘torchvision’ 问题

摘要 本文聚焦pip install安装torchvision后(或导入torchvision时)出现的ModuleNotFoundError: No module named torchvision报错,该问题核心是Python解释器在当前运行环境的模块查找路径(sys.path)中找不到torchvisi…