亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 keras ResNet50 模型進行二元分類的輸出層

使用 keras ResNet50 模型進行二元分類的輸出層

郎朗坤 2023-07-11 14:11:33
我正在嘗試使用 Keras ResNet50 實現來訓練二進制圖像分類模型。我想在不使用遷移學習的情況下測試模型,但是當我嘗試使用帶有 sigmoid 激活的簡單密集層進行二元分類來更改輸出層時,我得到了有關形狀大小的錯誤。我的代碼是這樣的:baseModel= ResNet50(weights=None, include_top=False, classes=2, pooling=max) output = baseModel.output output = layers.Dense(1, activation='sigmoid')(output) model = keras.models.Model(inputs=baseModel.input, outputs=output) model.compile(optimizer=Adam(learning_rate=0.0001), loss='binary_crossentropy',  metrics=['accuracy'])這樣做我得到了這個錯誤:ValueError: logits and labels must have the same shape ((None, 7, 7, 1) vs (None, 1))如果我在致密層之前添加一個扁平層,我會得到:ValueError: The last dimension of the inputs to `Dense` should be defined. Found `None`.我在這里缺少什么?我如何改變密集層的輸入形狀?
查看完整描述

1 回答

?
拉莫斯之舞

TA貢獻1820條經驗 獲得超10個贊

對于 ResNet,您指定了 Top=False 和 pooling = 'max',因此 Resent 模型已向模型添加了最終的最大池化層。因此,使用下面的代碼:您不需要添加展平層,最大池化會為您展平輸出。

out=basemodel.layers[-1].output 
output = layers.Dense(1, activation='sigmoid')(out)

您可以使用 model.summary() 查看模型結構。另外你不應該使用classes=2。當 top 為 false 時,不應指定類。


查看完整回答
反對 回復 2023-07-11
  • 1 回答
  • 0 關注
  • 203 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號