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

卷积神经网络的内存大小是多少?

潘文乐
2023-03-14

我在看http://cs231n.github.io/convolutional-networks/

我不明白为什么第2层(CONV3-64:[224x224x64])的内存大小是224x224x64

  1. 我理解有64个3x3大小的过滤器,但为什么输入大小乘以64?
  2. 为什么层(CONV3-128)中的权重数是(3x3x64)x128而不是(3x3x64x64)x128?(前一层的权重乘以新的128个过滤器)

谢谢

INPUT: [224x224x3]        memory:  224*224*3=150K   weights: 0
CONV3-64: [224x224x64]  memory:  224*224*64=3.2M   weights: (3*3*3)*64 = 1,728
CONV3-64: [224x224x64]  memory:  224*224*64=3.2M   weights: (3*3*64)*64 = 36,864
POOL2: [112x112x64]  memory:  112*112*64=800K   weights: 0
CONV3-128: [112x112x128]  memory:  112*112*128=1.6M   weights: (3*3*64)*128 = 73,728
CONV3-128: [112x112x128]  memory:  112*112*128=1.6M   weights: (3*3*128)*128 = 147,456
POOL2: [56x56x128]  memory:  56*56*128=400K   weights: 0
CONV3-256: [56x56x256]  memory:  56*56*256=800K   weights: (3*3*128)*256 = 294,912
CONV3-256: [56x56x256]  memory:  56*56*256=800K   weights: (3*3*256)*256 = 589,824
CONV3-256: [56x56x256]  memory:  56*56*256=800K   weights: (3*3*256)*256 = 589,824
POOL2: [28x28x256]  memory:  28*28*256=200K   weights: 0
CONV3-512: [28x28x512]  memory:  28*28*512=400K   weights: (3*3*256)*512 = 1,179,648
CONV3-512: [28x28x512]  memory:  28*28*512=400K   weights: (3*3*512)*512 = 2,359,296
CONV3-512: [28x28x512]  memory:  28*28*512=400K   weights: (3*3*512)*512 = 2,359,296
POOL2: [14x14x512]  memory:  14*14*512=100K   weights: 0
CONV3-512: [14x14x512]  memory:  14*14*512=100K   weights: (3*3*512)*512 = 2,359,296
CONV3-512: [14x14x512]  memory:  14*14*512=100K   weights: (3*3*512)*512 = 2,359,296
CONV3-512: [14x14x512]  memory:  14*14*512=100K   weights: (3*3*512)*512 = 2,359,296
POOL2: [7x7x512]  memory:  7*7*512=25K  weights: 0
FC: [1x1x4096]  memory:  4096  weights: 7*7*512*4096 = 102,760,448
FC: [1x1x4096]  memory:  4096  weights: 4096*4096 = 16,777,216
FC: [1x1x1000]  memory:  1000 weights: 4096*1000 = 4,096,000

TOTAL memory: 24M * 4 bytes ~= 93MB / image (only forward! ~*2 for bwd)
TOTAL params: 138M parameters

共有1个答案

鲜于俊侠
2023-03-14

你的第一个问题是指向前传球时存储的记忆。

  1. 224x224x64中的64个属于CONV3-64层,这是因为当您通过单个224x224x3图像时,它会通过64个3x3x3过滤器,因此必须在内存中存储64个新图像,以便通过前向传递将这些64个过滤器的效果传播到网络中

第二个是指网络中的权重参数

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

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

  • 我一直在从头开始创建卷积神经网络,对于如何对待隐藏卷积层的内核大小有点困惑。例如,假设我有一个图像作为并将其通过以下层。 卷积层,kernel_size=(5,5)并具有32个输出通道 吞吐量的新维度=(32,28,28) null 由于最初的输入是二维图像,我不知道如何对隐藏层进行卷积,因为现在的输入是三维的。

  • 我正在研究CS231n卷积神经网络,用于视觉识别。在卷积神经网络中,神经元按3维排列(,,)。我对CNN的有问题。我无法想象这是什么。 在链接中,他们说。 我可以理解这样的想法:我们从图像上取下一小块区域,然后将它与“滤镜”进行比较。那么滤镜会收集小图像吗?他们还说那么感受野的维数和滤波器的维数是一样的吗?这里的深度是多少?我们使用CNN的深度意味着什么? 编辑:所以在教程的一部分(真实世界示例部

  • 我正在开发一种卷积神经网络用于图像分类或更好的车牌分类。这些车牌最多包含8个字符,每个字符可以包含37个字符(A-Z、0-9和空格)。我现在想知道如何设计网络中的最后两层。我认为,最后一个必须是具有37个概率的softmax层。这应该完全连接到一个(?)神经元在前一层?我想,在前一层我们需要8个神经元,因为之前的车牌上有8个字符,但我不确定。在此层之前,我添加了一些卷积层和maxPooling层。

  • 然而,我不明白如何扩展这个模型来处理多个通道。每个特征图是否需要三个独立的权重集,并在每种颜色之间共享? 参考本教程的“共享权重”部分:http://deeplearning.net/tutorial/lenet.html特征图中的每个神经元都引用层m-1,颜色是从单独的神经元引用的。我不明白他们在这里表达的关系。神经元是核还是像素?为什么它们引用图像的不同部分? 根据我的例子,一个神经元内核似乎