繁体   English   中英

我们如何生成 CNN model?

[英]how can we generate a CNN model?

我看到一篇关于狗和猫分类的帖子,链接到那个博客

https://medium.com/@mrgarg.rajat/kaggle-dogs-vs-cats-challenge-complete-step-by-step-guide-part-2-e9ee4967b9

但在代码中,作者展示了这样的 CNN 网络架构

model = Sequential()

model.add(Conv2D(32, (3,3), input_shape=(ROWS, COLS, CHANNELS), activation='relu'))
model.add(MaxPooling2D(pool_size = (2,2)))

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

model.add(Conv2D(128, (3,3), activation='relu'))
model.add(MaxPooling2D(pool_size = (2,2)))
model.add(Dropout(0.4))

model.add(Conv2D(256, (3,3), activation='relu'))
model.add(MaxPooling2D(pool_size = (2,2)))
model.add(Dropout(0.4))

model.add(Conv2D(512, (1,1), activation='relu'))
#model.add(MaxPooling2D(pool_size = (2,2)))

model.add(Flatten())
model.add(Dropout(0.4))

model.add(Dense(units=120, activation='relu'))
model.add(Dense(units=2, activation='sigmoid'))

model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
model.summary()

我真的不知道作者是怎么用这个的,比如,他怎么想这样一个网络,为什么需要4个con2d和2个dense,以及他是如何使用dropout的,请帮我解释一下这个网络,非常感谢

在这个 CNN 中:

ROW 和 COL 为 64

频道是 3

您的问题是关于 model 的架构。 真正的答案是,实际上没有直截了当的方法来找到一开始就完成这项工作的好人。 这实际上是研发的主要任务,需要通过大量交叉验证来估计针对特定问题的良好架构。 这也是预训练模型如此珍贵的原因之一。

ML 有一个称为AutoML的分支,它试图在空间中导航并大致找到好的架构。 随意看看。

如果您想了解人们为什么使用某些 CNN 模型,您需要阅读有关 CNN 模型是如何开发的研究论文。 您可能想要阅读的几个模型是 VGG、ResNet、AlexNet 和 Inception。 大多数撰写文章的博主都是以这些模型为基础的,因为它们已被证明是非常有效的。

这些模型是通过结合理论(提出关于什么可行的想法)和测试(实际上是在所有层中尝试和添加)而开发的。

理解,其中大部分是建立在矩阵代数、概率和微积分之上的,所以如果你不了解这些主题,如果你真的想了解幕后发生的事情,你需要从那里开始。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM