第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

ResNet50 模型在 keras 中沒有通過遷移學(xué)習(xí)進(jìn)行學(xué)習(xí)

ResNet50 模型在 keras 中沒有通過遷移學(xué)習(xí)進(jìn)行學(xué)習(xí)

慕的地6264312 2022-06-22 20:42:23
我正在嘗試對(duì)在 PASCAL VOC 2012 數(shù)據(jù)集的 Imagenet 權(quán)重上預(yù)訓(xùn)練的 ResNet50 模型執(zhí)行遷移學(xué)習(xí)。由于它是一個(gè)多標(biāo)簽數(shù)據(jù)集,我sigmoid在最后一層使用激活函數(shù)和binary_crossentropy損失。指標(biāo)是precision,recall and accuracy。下面是我用來為 20 個(gè)類構(gòu)建模型的代碼(PASCAL VOC 有 20 個(gè)類)。img_height,img_width = 128,128num_classes = 20#If imagenet weights are being loaded,#input must have a static square shape (one of (128, 128), (160, 160), (192, 192), or (224, 224))base_model = applications.resnet50.ResNet50(weights= 'imagenet', include_top=False, input_shape= (img_height,img_width,3))x = base_model.outputx = GlobalAveragePooling2D()(x)#x = Dropout(0.7)(x)predictions = Dense(num_classes, activation= 'sigmoid')(x)model = Model(inputs = base_model.input, outputs = predictions)for layer in model.layers[-2:]:        layer.trainable=Truefor layer in model.layers[:-3]:        layer.trainable=Falseadam = Adam(lr=0.0001)model.compile(optimizer= adam, loss='binary_crossentropy', metrics=['accuracy',precision_m,recall_m])#print(model.summary())X_train, X_test, Y_train, Y_test = train_test_split(x_train, y, random_state=42, test_size=0.2)savingcheckpoint = ModelCheckpoint('ResnetTL.h5',monitor='val_loss',verbose=1,save_best_only=True,mode='min')earlystopcheckpoint = EarlyStopping(monitor='val_loss',patience=10,verbose=1,mode='min',restore_best_weights=True)model.fit(X_train, Y_train, epochs=epochs, validation_data=(X_test,Y_test), batch_size=batch_size,callbacks=[savingcheckpoint,earlystopcheckpoint],shuffle=True)model.save_weights('ResnetTLweights.h5')它運(yùn)行了 35 個(gè) epoch,直到 earlystopping,指標(biāo)如下(沒有 Dropout 層):我發(fā)現(xiàn)驗(yàn)證集的準(zhǔn)確率和召回率與帶有和不帶有 dropout 層的訓(xùn)練集相比非常低。我該如何解釋這個(gè)?這是否意味著模型過度擬合。如果是這樣,我該怎么辦?截至目前,模型預(yù)測(cè)是相當(dāng)隨機(jī)的(完全不正確)。數(shù)據(jù)集大小為 11000 張圖像。
查看完整描述

2 回答

?
暮色呼如

TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超9個(gè)贊

請(qǐng)您修改如下代碼并嘗試執(zhí)行

從:

predictions = Dense(num_classes, activation= 'sigmoid')(x)

至:

predictions = Dense(num_classes, activation= 'softmax')(x)

從:

model.compile(optimizer= adam, loss='binary_crossentropy', metrics=['accuracy',precision_m,recall_m])

至:

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


查看完整回答
反對(duì) 回復(fù) 2022-06-22
?
慕森王

TA貢獻(xiàn)1777條經(jīng)驗(yàn) 獲得超3個(gè)贊

這個(gè)問題已經(jīng)很老了,但如果它對(duì)其他人有幫助,我會(huì)回答它:

在此示例中,您凍結(jié)了除最后兩個(gè)層(全局平均池化和最后一個(gè)密集層)之外的所有層。有一種更簡(jiǎn)潔的方法可以達(dá)到相同的狀態(tài):

rn50 = applications.resnet50.ResNet50(weights='imagenet', include_top=False, input_shape=(img_height, img_width, 3))x = rn50.outputx = GlobalAveragePooling2D()(x)predictions = Dense(num_classes, activation= 'sigmoid')(x)model = Model(inputs = base_model.input, outputs = predictions)rn50.trainable = False  # <- thismodel.compile(...)

在這種情況下,從 ResNet50 網(wǎng)絡(luò)中提取特征并饋送到線性 softmax 分類器,但沒有訓(xùn)練 ResNet50 的權(quán)重。這稱為特征提取,而不是微調(diào)。

唯一正在訓(xùn)練的權(quán)重來自您的分類器,該分類器是用從隨機(jī)分布中提取的權(quán)重實(shí)例化的,因此應(yīng)該完全訓(xùn)練。您應(yīng)該使用 Adam 的默認(rèn)學(xué)習(xí)率:

model.compile(optimizer=tf.optimizers.Adam(learning_rate=0.001))

所以你可以訓(xùn)練它幾個(gè)時(shí)期,一旦完成,你就可以解凍主干并“微調(diào)”它:

backbone.trainable = Falsemodel.compile(optimizer=tf.optimizers.Adam(learning_rate=0.001))model.fit(epochs=50)backbone.trainable = Truemodel.compile(optimizer=tf.optimizers.Adam(learning_rate=0.00001))model.fit(epochs=60, initial_epoch=50)

Keras 網(wǎng)站上有一篇很好的文章:https ://keras.io/guides/transfer_learning/


查看完整回答
反對(duì) 回復(fù) 2022-06-22
  • 2 回答
  • 0 關(guān)注
  • 175 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)