[英]how can we generate a CNN model?
我看到一篇关于狗和猫分类的帖子,链接到那个博客
但在代码中,作者展示了这样的 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.