探究pytorch中多个卷积层和全连接层的输出方法

1 问题

问题1: 多个卷积层连续输出方法

问题2: 多个卷积层加上多个全连接层的输出方法。

2 方法

问题1: 多个卷积层连续输出方法

创建多个卷积层并连接它们时,通常会在每个卷积层后使用激活函数,这有助于引入非线性性,从而使网络能够学习更复杂的特征。激活函数有Sigmoid 函数、ReLU 函数、Tanh 函数等等,这里用ReLU作演示。(不同的激活函数适用于不同的情况,通常需要根据具体的任务和数据集来选择。ReLU 及其变体通常是首选,因为它们在实践中表现得很好。)

|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| import torch from torch import nn conv = nn.Conv2d( in_channels=3, out_channels=16, kernel_size=3, stride=2, ) conv1 = nn.Conv2d( in_channels= 16, # 输入通道数 out_channels= 64, # 当前卷积层使用的卷积核的数量 kernel_size= 3, # 卷积核的大小 3x3 stride=1, # 步长, 规定了卷积核每次扫描移动的步数,默认值为1 # padding默认值为0 padding=1,# 使用填充获得与输入特征图相同的尺寸, 3x3使用padding=1,5x5使用padding=2 ) # 激活函数 activation = nn.ReLU() if name == 'main': # 构造输入层数据 x = torch.rand(size=(3, 5, 5)) x = conv(x) x = activation(x) x = conv1(x) x = activation(x) print(x.shape) |

问题2: 多个卷积层加上多个全连接层的输出方法

卷积层到全连接层之间连接时需要flatten。 flatten 通常指的是将一个多维的张量(tensor)转换成一个一维的张量,以便进行全连接层等操作。可以使用 view 方法来实现这一操作。

|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| import torch from torch import nn conv = nn.Conv2d( in_channels=3, out_channels=16, kernel_size=3, stride=2, ) conv1 = nn.Conv2d( in_channels= 16, # 输入通道数 out_channels= 64, # 当前卷积层使用的卷积核的数量 kernel_size= 3, # 卷积核的大小 3x3 stride=1, # 步长, 规定了卷积核每次扫描移动的步数,默认值为1 # padding默认值为0 padding=1, ) # 全连接层 fc1 = nn.Linear(in_features=4,out_features=256) fc2 = nn.Linear(in_features=256,out_features=10) # 激活函数 activation = nn.ReLU() if name == 'main': # 构造输入层数据 x = torch.rand(size=(3, 5, 5)) x = conv(x) x = activation(x) x = conv1(x) x = activation(x) # 展平 x = x.view(x.size(0), -1) # 全连接层和激活函数 x = fc1(x) x = activation(x) x = fc2(x) print(x.shape) |

3 结语

在深度学习中,多个卷积层通过使用激活函数引入非线性,以学习更复杂的特征。通常,ReLU是常用的激活函数。在卷积层与全连接层之间,需要进行flatten操作,将多维张量转换成一维张量,以便进行全连接层的操作。这些是构建深度神经网络的关键步骤。

相关推荐
甩手网软件1 分钟前
Shopee2026新规:费率重构与履约收紧下,卖家如何破局?
大数据·人工智能
数据库小学妹3 分钟前
AI时代数据库怎么选?多模融合、数据统一存储与选型实战指南
数据库·人工智能·经验分享·ai
lizhihai_9910 分钟前
股市学习心得-AI 产业链核心标的梳理清单
大数据·服务器·人工智能·科技·学习
暮雪倾风14 分钟前
【AI】国内使用Claude Code,配置Claude Code,使用DeepSeek为例
人工智能
FrameNotWork21 分钟前
HarmonyOS6.1 AI 模型管理架构设计与最佳实践
人工智能·harmonyos
没事别瞎琢磨25 分钟前
十、统一 Runner 入口——能力检测与模式回退
人工智能·node.js
装不满的克莱因瓶27 分钟前
了解 LangChain 中的 LLM 与 ChatModel 的差异
人工智能·python·ai·langchain·llm·agent·chatmodel
dingzd9530 分钟前
跨境社媒运营越到后面 越比拼账号的表达稳定性
大数据·人工智能·矩阵·内容营销
云烟成雨TD32 分钟前
Spring AI 1.x 系列【54】Retry 机制分析
java·人工智能·spring
没事别瞎琢磨34 分钟前
八、环境隔离——构建安全的子进程环境
人工智能·node.js