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

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

Keras自定義損失函數訪問python全局變量的內部機制是什么?

Keras自定義損失函數訪問python全局變量的內部機制是什么?

慕村9548890 2021-09-25 16:15:37
Keras 自定義損失函數是否接受全局 python 變量?我正在構建我自己的 Keras 自定義損失函數,它只接受y_true和y_pred作為參數。但損失函數非常復雜,它依賴于其他變量。目前在我的實現中,損失函數只是直接在同一個 python 代碼腳本中使用全局變量.訓練完模型后,如果我想用模型做預測,那么python環境中的那些全局變量就會被改變。我的問題是,我是否需要再次編譯模型,以保證模型已使用這些外部全局變量的最新版本進行更新?Rlist=....def custom_loss(y_true,y_pred):    z = 0.0    #Rlist is the global variable     for j in Rlist:        z = z  +K.log(K.sum(K.exp(K.gather(y_pred,j[0])))) \        - K.log(K.sum(K.exp(K.gather(y_pred,j))))    z = -z     return z#below build the model and compile it with loss=custom_lossmodel=...model.compile(loss=custom_loss,....model.fit(x=train_x,y=train_y,...)#Rlist=...  update Rlist which is adaptive to test dataset#Do I need to recompile in the code below,or whether Rlist is updated#in custom_loss when it is called?model.predict(x=test_x,y=test_y,...)在我的損失函數中(實際上這是 cox 比例風險模型的損失函數),每個樣本的損失值之間的損失不相加。 Rlist是我的 Keras 代碼的 python 環境中的全局變量,我的問題是,在訓練模型后,如果我Rlist為測試數據集更改Rlist此變量,Keras 會自動更新,或者Rlist在編譯時使用該變量的舊版本構建計算圖?有什么解釋,如果我在損失函數中直接引用python環境中的一個全局變量,那么Tensorflow構建其計算圖時會發生什么?我知道使用全局變量不是一種習慣做法。還推薦更好的建議。
查看完整描述

1 回答

?
倚天杖

TA貢獻1828條經驗 獲得超3個贊

“我的 Keras 代碼的 Python 環境”究竟是什么意思?如果在訓練時將代碼中的 Rlist 變量設置為 [1,2,3]。然后在預測/生產模式下將其更改為 [3,2,1],您的自定義損失將看到 [3,2,1] 變量。


我不確定你想要實現什么,我想這可以工作:A)用 RList 創建一個真正的 ENV_Variable B)用你的 RList 創建一個 JSON 文件(這樣,你就可以使用你的 RList 數據服務器或云上的生產模式)。C)在你的代碼中創建一個字典,比如


RList={

    'train': [1,2,3], 

    'test':[3,2,1], 

    'production':[4,5,6]

}


查看完整回答
反對 回復 2021-09-25
  • 1 回答
  • 0 關注
  • 194 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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