簡體   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