当前位置: 首页 > 知识库问答 >
问题:

基于参数共享的卷积神经网络权值计算

谷越
2023-03-14

在阅读墨菲的《机器学习:概率观点》一书和迈克·奥尼尔的这篇文章时,我遇到了一些关于卷积神经网络中权重数的计算,我想了解这些计算。网络架构如下:

这是上述文章的解释:

第2层也是一个卷积层,但有50个要素地图。每个特征映射是5x5,特征映射中的每个单元是前一层所有6个特征映射对应区域的5x5卷积核,每个是13x13特征映射。因此,第2层中有5x5x50=1250个神经元,(5x5 1)x6x50=7800个重量,1250x26=32500个连接。

权重数的计算(5x5 1)x6x50=7800,对我来说似乎很奇怪。不应该是这样的实际计算:(5x5x6 1)x50=7550,根据此处解释的参数共享。

我的论点如下:我们有50个大小为5x5x6的过滤器,每个过滤器有一个偏差,因此权重的总数是(5x5x6 1)x50=7550。这是Pytorch代码,它验证了这一点:

import torch
import torch.nn as nn

model = nn.Conv2d(in_channels=6, out_channels=50, kernel_size=5, stride=2)
params_count = sum(param.numel() for param in model.parameters() if param.requires_grad)
print(params_count) # 7550

谁能解释一下这一点,哪一个是正确的?

共有1个答案

刘阳荣
2023-03-14

我的计算:

第一层深度为6,内核:5*5
第二层深度为50,内核:5*5

神经元总数#第二层:5*5*50=1250

权重总数为:5*5*50*6 = 7500

最后,偏置#Layer-2=50(深度为50)

我同意你的意见:总重量必须是7550。

 类似资料:
  • 我是CNN研究的新手,我从看Andrew'NG的课程开始。有一个例子我不明白: 他是如何计算#参数值的?

  • 主要问题 我无法理解特定图层的权重图。我使用了一种“无学习”的方法: 我用千层面作为我的神经网络库。 情节很好,但我不知道该怎么解释。 神经网络结构 im使用的结构: 以下是前3层的权重: **关于图片** 所以对我来说,它们看起来是随机的,我无法解释它们! 然而,在Cs231上,它说: Conv/FC过滤器。第二种常见策略是将权重可视化。这些通常在第一个CONV层上最容易解释,该层直接查看原始像

  • 注意: 本教程适用于对Tensorflow有丰富经验的用户,并假定用户有机器学习相关领域的专业知识和经验。 概述 对CIFAR-10 数据集的分类是机器学习中一个公开的基准测试问题,其任务是对一组大小为32x32的RGB图像进行分类,这些图像涵盖了10个类别: 飞机, 汽车, 鸟, 猫, 鹿, 狗, 青蛙, 马, 船以及卡车。 想了解更多信息请参考CIFAR-10 page,以及Alex Kriz

  • 卷积神经网络(Convolutional Neural Network, CNN)是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,对于大型图像处理有出色表现。卷积神经网络由一个或多个卷积层和顶端的全连通层(对应经典的神经网络)组成,同时也包括关联权重和池化层(pooling layer)。这一结构使得卷积神经网络能够利用输入数据的二维结构。与其他深度学习结构相比,卷积神经网络

  • 我正在使用千层面为MNIST数据集创建CNN。我将密切关注这个示例:卷积神经网络和Python特征提取。 我目前拥有的CNN架构(不包括任何退出层)是: 这将输出以下图层信息: 并输出可学习参数的数量为217,706 我想知道这个数字是如何计算的?我已经阅读了许多资源,包括这个StackOverflow的问题,但没有一个明确概括了计算。 如果可能,每层可学习参数的计算是否可以泛化? 例如,卷积层:

  • 我正在试图理解卷积神经网络中的维度是如何表现的。在下图中,输入为带1个通道的28乘28矩阵。然后是32个5乘5的过滤器(高度和宽度步幅为2)。所以我理解结果是14乘14乘32。但是在下一个卷积层中,我们有64个5×5的滤波器(同样是步幅2)。那么为什么结果是7乘7乘64而不是7乘7乘32*64呢?我们不是将64个滤波器中的每一个应用于32个通道中的每一个吗?