找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

1583

积分

0

好友

228

主题
发表于 6 天前 | 查看: 18| 回复: 0

在构建深度学习模型,尤其是[计算机视觉](人工智能: https://yunpan.plus/f/29-1)相关的模型时,`nn.Linear`(全连接层)和`nn.Conv2d`(二维卷积层)是PyTorch中最基础且核心的两个模块。本文将深入解析它们的基本用法、核心参数以及在`Python`代码中的实际应用

nn.Linear 全连接层详解

nn.Linear 用于在网络中定义全连接层(Fully Connected Layer)。在图像处理任务中需要特别注意:全连接层期望的输入和输出通常是二维张量,其形状一般为 [batch_size, feature_size],这与卷积层要求输入输出为四维张量([batch_size, channels, height, width])不同。

  • in_features: 指定输入二维张量特征维度的大小,即 [batch_size, size] 中的 size
  • out_features: 指定输出二维张量特征维度的大小,输出形状为 [batch_size, output_size]。同时,它也等同于该层所包含的神经元个数。

从张量形状变换的角度来理解,nn.Linear 层执行了一个从 [batch_size, in_features][batch_size, out_features] 的线性变换。

nn.Conv2d 二维卷积层详解

nn.Conv2d 是实现二维卷积操作的模块,其核心参数如下:

  • in_channels: 输入特征图的通道数。
  • out_channels: 输出特征图的通道数,也等同于本层使用的卷积核数量。
  • kernel_size: 卷积核的尺寸,可以是一个整数(表示方形卷积核)或一个(height, width)元组。
  • stride: 卷积核滑动的步长,控制每次移动的间隔。
  • padding: 在输入特征图边缘进行填充的像素数。

代码示例与应用

下面的代码展示了如何定义并使用一个nn.Conv2d层和一个nn.Linear层,模拟一个简单的卷积神经网络的前向过程。

import torch
from torch import nn

# 定义一个卷积层:输入3通道(如RGB图像),输出128个特征图,使用3x3卷积核,步长为1
conv1 = nn.Conv2d(
    in_channels=3,
    out_channels=128,
    kernel_size=3,
    stride=1,
)

# 定义一个全连接层:输入维度为128*26*26(由卷积层输出特征图展平得到),输出10个类别
fc1 = nn.Linear(
    in_features=128*26*26,
    out_features=10,
)

# 模拟一个批次的数据:32张3通道的28x28图像
x = torch.rand(size=(32, 3, 28, 28))

# 前向传播
x = conv1(x)           # 形状变化:[32, 3, 28, 28] -> [32, 128, 26, 26]
x = torch.flatten(x, 1) # 将特征图展平为二维张量:[32, 128*26*26]
x = fc1(x)             # 全连接层计算,输出形状:[32, 10]

print(x.shape)

输出结果
torch.Size([32, 10])

卷积与全连接层计算过程示意图

总结

  • nn.Linear:作为网络中的全连接层,其核心在于对输入特征进行线性变换。关键参数in_featuresout_features直接决定了输入与输出二维张量的特征维度。
  • nn.Conv2d:作为实现2D卷积的核心模块,其主要参数in_channelsout_channelskernel_size需要根据任务手动设置,而stridepadding等参数均有合理的默认值,在需要时进行调整即可。

理解这两个基础模块的参数意义和输入输出形状变化,是使用[PyTorch](人工智能: https://yunpan.plus/f/29-1)构建更复杂神经网络模型的重要基石




上一篇:Python一行式脚本实战:Linux系统监控与文件管理运维指南
下一篇:N8N自动化工作流实战:SEO运营与内容营销效率提升方案
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2025-12-24 21:11 , Processed in 0.243781 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2025 云栈社区.

快速回复 返回顶部 返回列表