簡體   English   中英

如何將最后一層反規范化為 Keras 中的標簽,類似於預處理規范化層(但相反)?

[英]How to perform de-normalization of last layer into labels in Keras, analogous to the preprocessing normalization layer (but inversed)?

據我了解,人工神經網絡在歸一化數據上效果最好,即通常輸入和輸出在理想情況下應該具有 0 的均值和 1 的方差(甚至,如果可能,“接近高斯”,或者至少, “表現良好”,分布)。

因此,當我第一次對預測變量和標簽進行一些特征規范化時,我已經看到/編寫了很多使用 Keras 的腳本。 這很痛苦,因為這意味着需要跟蹤許多均值和標准值,稍后在推理時正確應用它們,等等。

我最近發現,Keras 中現在有開箱即用的功能,可以以“可適應、不可訓練”的方式對預測變量進行歸一化,這非常方便,因為所有歸一化信息都是在外部存儲和使用的-the-box in the.network object:參見: https://keras.io/guides/preprocessing_layers/,https ://keras.io/api/layers/preprocessing_layers/numerical/normalization/#normalization-class 這使得使用/簿記變得更加簡單。

我的問題是:這是否有意義/是否有一種簡單的方法可以類似地在 Keras 中執行“輸出去規范化”,即假設來自 .network 的輸出均值為 0 且方差為 1,添加一個可適應的(可適應的)不可訓練;類似於預處理歸一化層)層,將這些輸出反歸一化為每個 label 的正確均值和方差?

我想這與預處理歸一化層非常相似,除了我們想要的是通過在標簽上應用預處理歸一化層獲得的內容的“逆變換”。 即,當使圖層適應標簽時,會得到一個圖層,該圖層將 0 均值 1 標准差分布“去規范化”為具有與標簽對應的特征均值和標准差的分布。

我看不出有什么方法可以得到這個“逆向層”或“去規范化層”,我是不是漏掉了什么/有沒有簡單的方法來做到這一點?

normalization層有一個invert參數:

如果為 True,該層將對其輸入應用逆變換:它將規范化的輸入轉回其原始形式。

所以,理論上你可以使用:

layer = tf.keras.layers.Normalization(invert=True)

去規范化。 目前,這是錯誤的實現,不會起作用(但似乎該錯誤已在下一個 keras 版本中修復)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM