如何分析CNN模型总结并改进?

数据挖掘 机器学习 神经网络 深度学习 美国有线电视新闻网 图像分类
2022-03-05 00:47:33

我正在使用 CNN(改编自网络上的一些链接)进行图像分类任务。大约有 8000 张尺寸为 128x128 的图像。它们属于 13 个不同的类别。以下是model.summary()) 的输出:

_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
batch_normalization_1 (Batch (None, 128, 128, 3)       12        
_________________________________________________________________
conv2d_1 (Conv2D)            (None, 128, 128, 32)      896       
_________________________________________________________________
max_pooling2d_1 (MaxPooling2 (None, 64, 64, 32)        0         
_________________________________________________________________
batch_normalization_2 (Batch (None, 64, 64, 32)        128       
_________________________________________________________________
conv2d_2 (Conv2D)            (None, 64, 64, 64)        18496     
_________________________________________________________________
max_pooling2d_2 (MaxPooling2 (None, 32, 32, 64)        0         
_________________________________________________________________
batch_normalization_3 (Batch (None, 32, 32, 64)        256       
_________________________________________________________________
conv2d_3 (Conv2D)            (None, 32, 32, 128)       73856     
_________________________________________________________________
max_pooling2d_3 (MaxPooling2 (None, 16, 16, 128)       0         
_________________________________________________________________
batch_normalization_4 (Batch (None, 16, 16, 128)       512       
_________________________________________________________________
conv2d_4 (Conv2D)            (None, 16, 16, 64)        73792     
_________________________________________________________________
global_average_pooling2d_1 ( (None, 64)                0         
_________________________________________________________________
dense_1 (Dense)              (None, 13)                845       
=================================================================
Total params: 168,793
Trainable params: 168,339
Non-trainable params: 454

如何分析此模型摘要以及如何改进此模型?

1个回答

不可训练的参数:454是什么意思?理想情况下应该为 0 吗?如果是这样,如何将其设为 0。

我想这是由于使用batch normalisation. 尝试通过调查其数学来确定。如果你看到这篇论文,你可以很容易地发现偏置项和,如果我记得的话,它们都被添加了。因此,一个可以被忽略并且不会被训练,因为它是不需要的。β

应该在最后添加密集层(在您在评论中提到的部分)还是可以在前面的层中添加它?

不是真的,密集层应该在卷积层之后使用。他们所做的是对卷积层获得的提取特征进行分类。关于 conv 层,它们用于减少参数数量和寻找局部模式。

至少据我所知,关于如何改变卷积层中过滤器的数量还没有达成共识。但这里有一点。在以下代码行中,您在密集层之前使用了一种池化层。如果来自 conv 层的激活数量很多,您可以使用它,但考虑到这样做会忽略重要特征。我建议你不要这样做,特别是对于最后一个 conv 层。此外,尝试增加密集层中的神经元数量或添加额外层以获得更好的准确性。

conv2d_4 (Conv2D)            (None, 16, 16, 64)        73792     
_________________________________________________________________
global_average_pooling2d_1 ( (None, 64)                0         
_________________________________________________________________
dense_1 (Dense)              (None, 13)                845       
=================================================================

关于使用批处理规范,它是由于一种称为Covariat Shift的问题而使用的。它只是试图保持不同层输出的分布,以促进学习过程。

根据您的问题,我强烈建议您观看 Andrew Ng 教授在 Coursera 中关于 ConvNets 的课程。