【问题标题】:How to compute the number of trainable paramters of a 3D convolution layer?如何计算 3D 卷积层的可训练参数数量?
【发布时间】:2019-04-15 21:09:39
【问题描述】:

我是 CNN 的初学者,我在构建网络时使用 3D 卷积层,但我无法理解这个卷积 3D 层的可训练参数是如何计算的。这是一个简单的单层网络示例,其输入形状为 (3,16,112,112)(通道、帧、高度、宽度),即 16 个大小为 (112*112) 的 RGB 图像:

def get_model(summary=False):

model = Sequential()
model.add(Convolution3D(64, (3, 3, 3), activation='relu', 
                        padding='valid', name='conv1',
                        strides=(1, 1, 1), 
                        input_shape=(3, 16, 112, 112)))
if summary:
    print(model.summary())
return model

摘要显示5248个可训练参数,谁能解释一下这个数字是如何产生的?

【问题讨论】:

    标签: parameters 3d deep-learning convolution


    【解决方案1】:

    可训练参数是指网络中的所有权重和偏差,以及 3D 卷积层中卷积滤波器中的值。这意味着在可训练的卷积滤波器中有 5248 个不同的连接权重、偏差和值。

    网络也可能有一些不可训练的部分,例如最大池化层。该层的作用不受训练的影响。

    权重数 = 内核宽度 * 内核高度 * 内核深度(因为 3d)x 输入图像中的通道数 * 内核数

    偏差数 = 内核数

    所以对你来说:

    权重数 = 3 x 3 x 3 x 3 x 64 = 5184

    偏差数 = 64

    参数数量 = 5184 + 64 = 5248

    【讨论】:

    • @convollutionBoy 谢谢你的回复,我知道这5248是可训练的,但我想知道如何计算它们?我找到了解释如何计算 2D 卷积层中参数数量的示例,但是对于 3D 卷积层,计算参数的方法不同。
    • 非常感谢,这正是我要找的。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-17
    • 1970-01-01
    • 2016-11-04
    • 1970-01-01
    • 2020-09-21
    • 2019-02-08
    相关资源
    最近更新 更多