如何计算每个卷积层中的参数(CIFAR-10数据集)

时间:2018-03-26 20:24:08

标签: deep-learning

这是为存储在50000 x 32 x 32 x 3的4D张量中的输入图像创建模型的功能。

def createModel():
   model = Sequential()
   model.add(Conv2D(32, (3, 3), padding='same', activation='relu', input_shape=input_shape))
   model.add(Conv2D(32, (3, 3), activation='relu'))
   model.add(MaxPooling2D(pool_size=(2, 2)))
   model.add(Dropout(0.25))

   model.add(Conv2D(64, (3, 3), padding='same', activation='relu'))
   model.add(Conv2D(64, (3, 3), activation='relu'))
   model.add(MaxPooling2D(pool_size=(2, 2)))
   model.add(Dropout(0.25))

   model.add(Conv2D(64, (3, 3), padding='same', activation='relu'))
   model.add(Conv2D(64, (3, 3), activation='relu'))
   model.add(MaxPooling2D(pool_size=(2, 2)))
   model.add(Dropout(0.25))

   model.add(Flatten())
   model.add(Dense(512, activation='relu'))
   model.add(Dropout(0.5))
   model.add(Dense(nClasses, activation='softmax'))

return model

模型摘要(attached)表明第一次卷积后的参数数量应该是896个参数,但我不确定它们是如何得到这个数字的。 我假设计算应该是= 32 * 3 * 3参数。

有人可以告诉我如何计算每个卷积层的参数吗?

1 个答案:

答案 0 :(得分:0)

2D卷积中的内核参数数量为:

output channels * kernel width * kernel height * input channels

如果使用偏差(use_bias=True),则会增加output channels偏差参数。

因此,您的第一个图层有(32 * 3 * 3 * 3) + 32 = 896个参数

您的第二层有(32 * 3 * 3 * 32) + 32 = 9248个参数