计算CNN卷积神经网络中各层的参数数量「附代码」
每个对机器学习感兴趣的机器学习工程师/软件开发人员/学生都在卷积神经网络(也称为CNN)上工作。我们有一个一般理论,即如何训练网络对图像进行分类。但是,刚接触机器学习/神经网络的人们并不了解CNN如何精确地学习参数。 我们知道,在每个转换层中,网络都试图了解基本模式。例如:在第一层中,网络尝试学习图案和边缘。在第二层中,它尝试了解形状/颜色和其他内容。最后一层称为要素层/完全连接层尝试对图像进行分类。 在学习参数之前,我们需要了解卷积网络中的一些基本概念,这对修改/重用源代码非常有帮助。 CNN网络中存在各种层。 输入层: 所有输入层所做的都是读取图像。因此,这里没有学习参数。 卷积层: 考虑一个以“ l ”个特征图为输入并以“ k ”个特征图为输出的卷积层。过滤器尺寸为“ n * m ” 。 在此,输入具有 l = 32个 特征图作为输入, k = 64个 特征图作为输出,并且过滤器大小为 n = 3和m = 3 。重要的是要理解,我们不只是拥有3 * 3过滤器,而是实际上拥有 3 * 3 * 32 过滤器,因为我们的输入具有32个尺寸。作为第一转换层的输出,我们学习了64个不同的 3 * 3 * 32 滤波器,总权重为“ n * m * k * l ”。然后,每个特征图都有一个称为“偏差”的术语。因此,参数总数为“ (n * m * l + 1)* k ”. 池化层 : 池化层