如何计算 3D 卷积层的可训练参数数量?
How to compute the number of trainable paramters of a 3D convolution layer?
我是 CNN 的初学者,我在构建网络时使用了 3D 卷积层,但我无法理解这个 convolution3D 层的可训练参数是如何计算的。这是一个简单的单层网络示例,输入形状为 (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 个可训练参数,谁能解释一下这个数字是如何得出的?
可训练参数是指网络中的所有权重和偏差,以及 3D 卷积层中卷积滤波器中的值。这意味着在可训练的卷积滤波器中有 5248 个不同的连接权重、偏差和值。
网络也可能有不可训练的部分,例如最大池化层。该层的作用不受训练的影响。
权重数=内核宽度*内核高度*内核深度(因为3d)x输入图像中的通道数*内核数
偏置数 = 内核数
所以对你来说:
权重数 = 3 x 3 x 3 x 3 x 64 = 5184
偏差数 = 64
参数个数=5184+64=5248
我是 CNN 的初学者,我在构建网络时使用了 3D 卷积层,但我无法理解这个 convolution3D 层的可训练参数是如何计算的。这是一个简单的单层网络示例,输入形状为 (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 个可训练参数,谁能解释一下这个数字是如何得出的?
可训练参数是指网络中的所有权重和偏差,以及 3D 卷积层中卷积滤波器中的值。这意味着在可训练的卷积滤波器中有 5248 个不同的连接权重、偏差和值。
网络也可能有不可训练的部分,例如最大池化层。该层的作用不受训练的影响。
权重数=内核宽度*内核高度*内核深度(因为3d)x输入图像中的通道数*内核数
偏置数 = 内核数
所以对你来说:
权重数 = 3 x 3 x 3 x 3 x 64 = 5184
偏差数 = 64
参数个数=5184+64=5248