keras 自定義loss model.add_loss的使用詳解
一點(diǎn)見(jiàn)解,不斷學(xué)習(xí),歡迎指正
1、自定義loss層作為網(wǎng)絡(luò)一層加進(jìn)model,同時(shí)該loss的輸出作為網(wǎng)絡(luò)優(yōu)化的目標(biāo)函數(shù)
from keras.models import Model import keras.layers as KL import keras.backend as K import numpy as np from keras.utils.vis_utils import plot_model x_train=np.random.normal(1,1,(100,784)) x_in = KL.Input(shape=(784,)) x = x_in x = KL.Dense(100, activation='relu')(x) x = KL.Dense(784, activation='sigmoid')(x) def custom_loss1(y_true,y_pred): return K.mean(K.abs(y_true-y_pred)) loss1=KL.Lambda(lambda x:custom_loss1(*x),name='loss1')([x,x_in]) model = Model(x_in, [loss1]) model.get_layer('loss1').output#取出loss model.add_loss(loss1)#作為網(wǎng)絡(luò)優(yōu)化的目標(biāo)函數(shù) model.compile(optimizer='adam') plot_model(model,to_file='model.png',show_shapes=True) # model.fit(x_train, None, epochs=5)
2、自定義loss,作為網(wǎng)絡(luò)優(yōu)化的目標(biāo)函數(shù)
x_in = KL.Input(shape=(784,)) x = x_in x = KL.Dense(100, activation='relu')(x) x = KL.Dense(784, activation='sigmoid')(x) model = Model(x_in, x) loss = K.mean((x - x_in)**2) model.add_loss(loss)#只是作為loss優(yōu)化目標(biāo)函數(shù) model.compile(optimizer='adam') plot_model(model,to_file='model.png',show_shapes=True) model.fit(x_train, None, epochs=5)
補(bǔ)充知識(shí):keras load_weights fine-tune
分享一個(gè)小技巧,就是在構(gòu)建網(wǎng)絡(luò)模型的時(shí)候,不要怕麻煩,給每一層都定義一個(gè)名字,這樣在復(fù)用之前的參數(shù)權(quán)重的時(shí)候,除了官網(wǎng)給的先加載權(quán)重,再凍結(jié)權(quán)重之外,你可以通過(guò)簡(jiǎn)單的修改層的名字來(lái)達(dá)到加載之前訓(xùn)練的權(quán)重的目的,假設(shè)權(quán)重文件保存為model_pretrain.h5 ,重新使用的時(shí)候,我把想要復(fù)用的層的名字設(shè)置成一樣的,然后
model.load_weights('model_pretrain.h5', by_name=True)
以上這篇keras 自定義loss model.add_loss的使用詳解就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
python os.path.isfile()因參數(shù)問(wèn)題判斷錯(cuò)誤的解決
今天小編就為大家分享一篇python os.path.isfile()因參數(shù)問(wèn)題判斷錯(cuò)誤的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-11-11python 三種方法實(shí)現(xiàn)對(duì)Excel表格的讀寫(xiě)
這篇文章主要介紹了python 三種方法實(shí)現(xiàn)對(duì)Excel表格的讀寫(xiě),幫助大家更好的利用python處理表格,感興趣的朋友可以了解下2020-11-11詳解BeautifulSoup獲取特定標(biāo)簽下內(nèi)容的方法
這篇文章主要介紹了詳解BeautifulSoup獲取特定標(biāo)簽下內(nèi)容的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12python把數(shù)據(jù)框?qū)懭隡ySQL的方法
這篇文章主要介紹了如何讓python把數(shù)據(jù)框?qū)懭隡ySQL,下文利用上海市2016年9月1日公共交通卡刷卡數(shù)據(jù)的一份數(shù)據(jù)單展開(kāi)其方法,需要的小伙伴可以參考一下2022-03-03