当前位置: 首页 > 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.mrgr.cn/news/67944.html

相关文章:

  • 【深度学习滑坡制图|论文解读3】基于融合CNN-Transformer网络和深度迁移学习的遥感影像滑坡制图方法
  • 【计算机网络】TCP协议面试常考(一)
  • 【伙伴云-注册安全分析报告】
  • 蓝桥杯-网络安全比赛题目-遗漏的压缩包
  • 软件开发项目管理:实现目标的实用指南
  • CentOS系统查看CPU、内存、操作系统等信息
  • 算法每日练 -- 双指针篇(持续更新中)
  • 【IC验证】systemverilog的设计特性
  • 零基础小白 Python这样学就对啦!——05篇
  • RMQ消息发送失败处理
  • 解析静态链接
  • 理解Web登录机制:会话管理与跟踪技术解析(二)-JWT令牌
  • MP2315 DC-DC电源芯片引脚功能说明
  • 基于STM32的温室自主灌溉系统(论文+源码)
  • 初识arkts2
  • 父组件调用函数式子组件,并向子组件传递函数参数。
  • PCL截取ROI
  • 123456789
  • CORS(跨域资源共享)和SOP(同源策略)
  • C++从零到满绩——命名空间、输入输出and缺省参数
  • 架构师:如何提高web网站的请求并发响应量?
  • 高速电机精确控制
  • kafka+zookeeper的搭建
  • 【笔记】变压器-热损耗-频响曲线推导 - 04 额定功率处损耗特性
  • 【jmeter】jmeter的线程组功能的详细介绍
  • lua入门教程:ipairs