CNN中致密层神经元的数量



我想问你一个关于CNN中密集层中使用的神经元数量的问题。正如我所看到的一般,16,32,6412825651210242048个神经元正在密集层中使用。那么,在输出层之前,降序和升序更好吗?

例如

model.add(Dense(2048,kernel_regularizer='l2' ,activation='relu'))
model.add(Dense(1024,kernel_regularizer='l2' ,activation='relu'))
model.add(Dense(512,kernel_regularizer='l2' ,activation='relu'))
model.add(Dense(128,kernel_regularizer='l2' ,activation='relu'))

model.add(Dense(128,kernel_regularizer='l2' ,activation='relu'))
model.add(Dense(512,kernel_regularizer='l2' ,activation='relu'))
model.add(Dense(1024,kernel_regularizer='l2' ,activation='relu'))
model.add(Dense(2048,kernel_regularizer='l2' ,activation='relu'))

请你也解释一下,好吗?谢谢

TLDR:

你真的可以用它们中的任何一个。但这取决于许多克里特岛。

Semi-Long解释:

你可以使用其中任何一个,但它们会带来不同的含义。基本上,你希望神经元的数量随着特征图的大小减少而增加,以保持几乎相同的代表能力。当涉及到开发更抽象的功能时,情况也是如此,我稍后将讨论这些功能
这就是为什么你在很多论文中看到,它们从网络开始时的一个小数字开始,然后逐渐增加。
这背后的直觉是,早期的层处理原始概念,因此在某个时候拥有大量的神经元并不会真正受益,但随着你深入,抽象的层次越来越丰富,你希望能够尽可能多地获取信息,更好地创建新的/更高的/更丰富的禁欲。这就是为什么你越深入,神经元就越多。

另一方面,当你到达网络的尽头时,你会想从迄今为止开发的所有功能中选择最好的功能,所以你开始逐渐减少神经元的数量,所以希望你最终能获得对你的特定任务最重要的功能。

不同的架构设计具有不同的含义,并且基于对手头任务的不同直觉。你需要根据自己的需求选择最佳策略。

没有这样的递减与递增规则。但大多数人都遵循递减,但试着在你的fc部分保留比上次分类神经元更多的神经元

如果您看到VGG16 arch,最后一层的顺序是:4096、4096、1000。因此,这里1000是imagenet数据集中的类数。

在您的情况下,您可以遵循以下内容:

model.add(Dense(2048,kernel_regularizer='l2' ,activation='relu'))
model.add(Dense(1024,kernel_regularizer='l2' ,activation='relu'))
model.add(Dense(512,kernel_regularizer='l2' ,activation='relu'))
model.add(Dense(128,kernel_regularizer='l2' ,activation='relu'))
model.add(Dense(number_classes ,activation='softmax'))

最新更新