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

手机网站规格贵阳市做网站电话

手机网站规格,贵阳市做网站电话,房产网加盟,沈阳网站关键词优化多少钱全连接层和卷积层等效情况举例 在什么情况下,全连接层和卷积层是等效的? 一是当卷积滤波器与感受野大小相当时;二是当卷积滤波器大小为1时。 import torch print(f"PyTorch version: {torch.__version__}")PyTorch version: 2.7…

全连接层和卷积层等效情况举例

在什么情况下,全连接层和卷积层是等效的?

一是当卷积滤波器与感受野大小相当时;二是当卷积滤波器大小为1时。

import torch
print(f"PyTorch version: {torch.__version__}")
PyTorch version: 2.7.0+cpu

1. 全连接层参考

下图展示了一个有4个输入单元和2个输出单元的全连接层示例,它包含了8个权重和2个偏置单元。

全连接层

# 设置随机种子,保证结果可复现
torch.manual_seed(888)# 定义一个全连接层(线性层),输入特征数为4,输出特征数为2
fc = torch.nn.Linear(4, 2)# 构造一个输入张量,形状为(1, 4)
inputs = torch.tensor([[1., 2., 3., 4.]])# 在不计算梯度的上下文中进行前向传播
with torch.no_grad():out1 = fc(inputs)# 打印输出结果
print(out1)
tensor([[0.2983, 1.4994]])
# Check the weights of the linear layer
fc.weight
Parameter containing:
tensor([[-0.4525,  0.1935, -0.3702,  0.3160],[ 0.2698,  0.2885,  0.2830, -0.0791]], requires_grad=True)

2. 情景1:卷积核大小等于输入大小

假设卷积核大小为 2 × 2 2 \times 2 2×2,有一个输入通道、两个输出通道。输入的大小同样是 2 × 2 2 \times 2 2×2

卷积核大小等于输入大小

PyTorch中的卷积层默认期望输入为NCHW格式,其中:

  • N = 批量大小(batch size)
  • C = 通道数(channels)
  • H = 高度(height)
  • W = 宽度(width)
# 将形状为(1, 4)的inputs张量重塑为(1, 1, 2, 2),以匹配卷积层的输入格式(N, C, H, W)
reshaped = inputs.reshape(-1, 1, 2, 2)
reshaped
tensor([[[[1., 2.],[3., 4.]]]])
# 定义一个2D卷积层,输入通道数为1,输出通道数为2,卷积核大小为2x2
conv = torch.nn.Conv2d(in_channels=1,      # 输入通道数out_channels=2,     # 输出通道数kernel_size=2       # 卷积核大小为2x2
)# 查看卷积层的权重张量形状
conv.weight.shape      # 形状为 (2, 1, 2, 2):2个输出通道,每个通道1个输入通道,卷积核2x2
torch.Size([2, 1, 2, 2])

注意:Conv2d中的权重同样是随机初始化的,因此如果要获得完全相同的结果,需要将卷积层中的随机权重用全连接层中的权重进行覆盖。

# 在不计算梯度的上下文中,将全连接层的权重和偏置赋值给卷积层
with torch.no_grad():# 将fc第0个输出单元的权重(1x4)重塑为(1,2,2),赋值给conv第0个输出通道的卷积核conv.weight[0][0] = fc.weight[0].reshape(1, 2, 2)# 将fc第1个输出单元的权重(1x4)重塑为(1,2,2),赋值给conv第1个输出通道的卷积核conv.weight[1][0] = fc.weight[1].reshape(1, 2, 2)# 将fc的偏置赋值给conv的偏置conv.bias[0] = fc.bias[0]conv.bias[1] = fc.bias[1]# 用卷积层对输入进行前向传播out2 = conv(reshaped)# 打印卷积层的输出结果
print(out2)
tensor([[[[0.2983]],[[1.4994]]]])
# 比较全连接层输出和卷积层输出是否完全相等(元素级比较)
out1.flatten() == out2.flatten()
tensor([True, True])

3. 情景2:卷积核大小为1

卷积核大小为1

# 将形状为(1, 4)的inputs张量重塑为(1, 4, 1, 1),以匹配卷积层输入格式(N, C, H, W)
reshaped2 = inputs.reshape(-1, 4, 1, 1)
reshaped2
tensor([[[[1.]],[[2.]],[[3.]],[[4.]]]])
# 定义一个2D卷积层,输入通道数为4,输出通道数为2,卷积核大小为1x1
conv = torch.nn.Conv2d(in_channels=4,      # 输入通道数为4out_channels=2,     # 输出通道数为2kernel_size=1       # 卷积核大小为1x1
)# 查看卷积层的权重张量形状
conv.weight.shape
torch.Size([2, 4, 1, 1])
# 在不计算梯度的上下文中,将全连接层的权重和偏置赋值给卷积层
with torch.no_grad():# 将fc第0个输出单元的权重(1x4)重塑为(4,1,1),赋值给conv第0个输出通道的卷积核conv.weight[0] = fc.weight[0].reshape(4, 1, 1)# 将fc第1个输出单元的权重(1x4)重塑为(4,1,1),赋值给conv第1个输出通道的卷积核conv.weight[1] = fc.weight[1].reshape(4, 1, 1)# 将fc的偏置赋值给conv的偏置conv.bias[0] = fc.bias[0]conv.bias[1] = fc.bias[1]# 用卷积层对输入进行前向传播out3 = conv(reshaped2)# 打印卷积层的输出结果
print(out3)
tensor([[[[0.2983]],[[1.4994]]]])
out1.flatten() == out3.flatten()
tensor([True, True])

4. 总结

本文通过具体的PyTorch代码和可视化示例,演示了全连接层(Linear)和卷积层(Conv2d)在两种特殊情况下的等效性:

    1. 当卷积核大小等于输入特征的空间尺寸时,卷积操作等价于全连接操作。此时,每个卷积核覆盖整个输入区域,权重和偏置可以一一对应映射到全连接层。
    1. 当卷积核大小为1×1,且输入通道数等于全连接层输入特征数时,卷积层的每个输出通道等价于全连接层的一个输出单元。此时,卷积层的权重和偏置同样可以直接赋值自全连接层,实现完全等价的前向传播结果。

通过实验验证,两种情况下卷积层和全连接层的输出完全一致。这说明在特定结构下,二者可以互相替换。

http://www.dtcms.com/wzjs/575571.html

相关文章:

  • 校园网站建设与管理海市科技网站建设
  • 电商网站开发教程汕头网络推广平台
  • 南通网站推广公司wordpress 自定义文章类型
  • 南通长城建设集团有限公司网站本机安装wordpress
  • 在线制作图片网站自己在线制作logo免费 生成器
  • 做网站 传视频 用什么笔记本好在线免费看影视网站
  • 女頻做的最好的网站东莞十大保安公司
  • php 网站发布php c2c网站开发的 书
  • 上海免费模板建站免费ppt模板下载包图网
  • 嘉兴营销型网站建设网页设计代码如何写实训报告过程
  • 东莞网站建设优化推广广州白云网站建设
  • 网站被host重定向如何开发一个app软件
  • 丹阳市建设局网站网上接效果图平台
  • 上海网站设计与制作公司都是自己制作网站
  • 企业网站硬件设计免费行情软件app网站下载大全
  • 网站建设 软件开发的公司排名多语言网站制作
  • 毕设源码网站艺术设计方案
  • 工作室 网站备案手机做网站服务器
  • 建设科技网络网站的意义和目的网站建设合同细节
  • 滨州哪里有做网站的seo81
  • 网站建设新手教程视频北京做网站电话
  • 河南省建设教育协会网站首页网站建设的前端用什么编程
  • html手机网站怎么做广州 网站建设模板
  • 产品做推广都有那些网站wordpress边栏个性化
  • 浙江省电子商务网站建设网站建设软件哪个好
  • 网站后台找不到了怎么办ip怎么做网站
  • 北京网站制作方案公司医院网站建设趋势
  • 江苏省住房和城乡建设厅网站首页汕头制作手机网站
  • 丽水高端网站建设珠海个人建站模板
  • 做企业网站哪里找自己给公司做网站