我是CNN的初学者,在构建网络时使用的是3D卷积层,但是我无法理解如何计算该convolution3D层的可训练参数。这是一个简单的单层网络示例,其输入形状为(3,16,112,112)(通道,帧,高度,宽度),即大小为(112 * 112)的16个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个可训练的参数,有人可以向我解释这个数字的产生方式吗?
答案 0 :(得分:1)
可训练参数是指网络中所有权重和偏差以及3D卷积层中卷积滤镜中的值。这意味着可训练的卷积滤波器中有5248种不同的连接权重,偏差和值。
网络也可能包含不可训练的部分,例如最大池化层。该层的作用不受培训的影响。
权数=内核宽度*内核高度*内核深度(由于3d)x输入图像中的通道数*内核数
偏差数=内核数
所以对你来说
重量数= 3 x 3 x 3 x 3 x 64 = 5184
偏差数= 64
参数数量= 5184 + 64 = 5248