全卷积和全连接

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

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


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

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

python 复制代码
import torch
import torch.nn as nn
import torch.nn.functional as F

class 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)  # 全连接层1
        self.fc2 = nn.Linear(hidden_size, hidden_size) # 全连接层2
        self.fc3 = nn.Linear(hidden_size, output_size) # 全连接层3

    def 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。卷积层的好处在于可以捕获空间结构特征,同时能处理任意大小的输入。

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

python 复制代码
import torch
import torch.nn as nn
import torch.nn.functional as F

class 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)  # 卷积层1
        self.conv2 = nn.Conv2d(in_channels=16, out_channels=32, kernel_size=3, padding=1) # 卷积层2
        self.conv3 = nn.Conv2d(in_channels=32, out_channels=10, kernel_size=3, padding=1) # 卷积层3

    def 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(卷积层),适合处理图像和空间数据,可用于任意大小的输入。
相关推荐
Yo_Becky20 分钟前
【PyTorch】PyTorch预训练模型缓存位置迁移,也可拓展应用于其他文件的迁移
人工智能·pytorch·经验分享·笔记·python·程序人生·其他
DeepSeek-大模型系统教程22 分钟前
深入金融与多模态场景实战:金融文档分块技术与案例汇总
人工智能·ai·语言模型·程序员·大模型·大模型学习·大模型教程
xinxiangwangzhi_27 分钟前
pytorch底层原理学习--PyTorch 架构梳理
人工智能·pytorch·架构
yzx99101331 分钟前
关于网络协议
网络·人工智能·python·网络协议
AiTEN_Robot33 分钟前
AGV 无人叉车关键技术问题解析:精准定位算法 / 安全避障逻辑 / 系统对接协议全方案
人工智能·机器人·自动化·制造
云天徽上34 分钟前
【PaddleOCR】OCR常见关键信息抽取数据集,包含FUNSD、XFUND、WildReceipt等整理,持续更新中......
人工智能·计算机视觉·信息可视化·paddlepaddle·paddleocr·文本识别
zskj_zhyl34 分钟前
智绅科技:以科技为翼,构建养老安全守护网
人工智能·科技·安全
刘海东刘海东35 分钟前
结构型智能科技的关键可行性——信息型智能向结构型智能的转换(提纲)
人工智能
Jay Kay1 小时前
TensorFlow源码深度阅读指南
人工智能·python·tensorflow
FF-Studio1 小时前
【硬核数学 · LLM篇】3.1 Transformer之心:自注意力机制的线性代数解构《从零构建机器学习、深度学习到LLM的数学认知》
人工智能·pytorch·深度学习·线性代数·机器学习·数学建模·transformer