当前位置: 首页 > news >正文

全卷积和全连接

全连接网络和全卷积网络不一样

以下是对两者的正确解释和代码示例:


1. 全连接网络(Fully Connected Network)

全连接网络使用的是 线性层nn.Linear),也就是我们常说的“全连接层”。它是用于将每一个输入节点与输出节点直接连接的网络结构。

import torch
import torch.nn as nn
import torch.nn.functional as Fclass FullyConnectedNetwork(nn.Module):def __init__(self, input_size=128, hidden_size=64, output_size=10):super(FullyConnectedNetwork, self).__init__()self.fc1 = nn.Linear(input_size, hidden_size)  # 全连接层1self.fc2 = nn.Linear(hidden_size, hidden_size) # 全连接层2self.fc3 = nn.Linear(hidden_size, output_size) # 全连接层3def forward(self, x):x = F.relu(self.fc1(x))  # 激活函数x = F.relu(self.fc2(x))x = self.fc3(x)          # 输出层return x# 测试
model = FullyConnectedNetwork()
input_data = torch.randn(32, 128)  # 输入为 (batch_size, 输入特征维度)
output = model(input_data)
print(output.shape)  # 输出形状: (32, 10)

这里的 nn.Linear 代表全连接层,每个神经元都与下一层的每个神经元直接相连。


2. 全卷积网络(Fully Convolutional Network)

全卷积网络则使用的是 卷积层nn.Conv2d),适用于图像或空间数据处理,不使用 nn.Linear。卷积层的好处在于可以捕获空间结构特征,同时能处理任意大小的输入。

以下是一个简单的全卷积网络示例:

import torch
import torch.nn as nn
import torch.nn.functional as Fclass FullyConvolutionalNetwork(nn.Module):def __init__(self):super(FullyConvolutionalNetwork, self).__init__()self.conv1 = nn.Conv2d(in_channels=3, out_channels=16, kernel_size=3, padding=1)  # 卷积层1self.conv2 = nn.Conv2d(in_channels=16, out_channels=32, kernel_size=3, padding=1) # 卷积层2self.conv3 = nn.Conv2d(in_channels=32, out_channels=10, kernel_size=3, padding=1) # 卷积层3def forward(self, x):x = F.relu(self.conv1(x))  # 激活函数x = F.relu(self.conv2(x))x = self.conv3(x)          # 输出层return x# 测试
model = FullyConvolutionalNetwork()
input_data = torch.randn(32, 3, 64, 64)  # 输入为 (batch_size, 通道数, 高, 宽)
output = model(input_data)
print(output.shape)  # 输出形状: (32, 10, 64, 64)

在这里,nn.Conv2d 代表卷积层,它通过卷积操作提取空间特征,适合处理图像类的输入数据。


总结

  • 全连接网络:使用 nn.Linear(线性层),适合用于固定大小的输入,通常用于特征向量或结构化数据。
  • 全卷积网络:使用 nn.Conv2d(卷积层),适合处理图像和空间数据,可用于任意大小的输入。
http://www.lryc.cn/news/479843.html

相关文章:

  • Unity图形学之Shader结构
  • 离散时间信号的产生
  • 物联优化汽车齿轮锻造
  • CocosCreator 构建透明背景应用(最新版!!!)
  • 使用CentOS宝塔面板docker搭建EasyTier内网穿透服务
  • HTMLCSS: 实现可爱的冰墩墩
  • 天地图入门|标注|移动飞行|缩放,商用地图替换
  • Flutter PC端UI组件库
  • NVR小程序接入平台/设备EasyNVR多品牌NVR管理工具/设备汇聚公共资源场景方案全析
  • 干部谈话考察系统:革新传统,精准高效
  • 反转链表(Leetcode)
  • 制作游戏外挂的技术栈有哪些
  • python下载pdf
  • 我们来学mysql -- 同时使用 AND 和 OR 查询错误(填坑篇)
  • 关于Websocket
  • vue2 pdf 链接地址打开
  • c# 动态lambda实现二级过滤(多种参数类型)
  • 34.Redis事务
  • 认识类和对象
  • 解决echarts桑基图为0时tooltip不显示的问题
  • vue3 基础笔记
  • Oracle 第30章:最佳实践与案例研究
  • 第九周预习报告
  • 【分享】这篇教程助力你成为 JavaScript 糕手!(四)
  • 双亲委派模型的破坏
  • Android关机流程知多少?
  • 深入理解指针end(总结篇)
  • C# 程序暂停的两种方式
  • 【LeetCode】【算法】160.相交链表
  • 光伏破局 引领能源革命