簡體   English   中英

如何使火炬張量“非正規化”?

[英]How to “denormalize” a pytorch tensor?

我想對我的神經網絡的標簽進行歸一化,但也可以反轉歸一化過程,以便可以將預測輸出縮放回原始大小。

我的標簽的格式為:

[[ 2.25, 2345123.23],
 [ 1.13, 234565.11],
 ...
 [0.12, 990232.98]]

現在,我想規范化每一列,使值的范圍從0到1。

我發現pytorch具有torch.nn.functional.normalize函數,該函數使我可以使用所需的p范數沿特定維度進行歸一化。

是否有一個現有的逆函數可以縮放我的歸一化值?

當前,我正在使用一個自定義函數,該函數執行如下功能縮放,將兩個列縮放在一起,但是,我想確保在重寫之前,我沒有創建一個在割炬庫中已經存在的函數。

 A = lbl_min
 B = lbl_max
 a = lower_bound
 b = upper_bound
 self.labels = a*np.ones(shape) + (self.labels - A*np.ones(shape))*(b-a)/(B-A)

附加信息:我正在使用回歸模型來輸出連續的真實值。 我需要“反規范化”我的預測,以便根據真實值驗證它們。 另外,如果要在實際應用中使用模型,則需要將輸出恢復為原始單位。

  • 我的神經網絡可以一次預測范圍非常不同的多個值。
  • 這兩個值具有不同的分布,但可以從相同的輸入進行預測。
  • 我的輸入是將圖像分為兩個CNN層,然后將其饋送到兩個完全連接的層中

這是一個技巧問題。 規范化您的價值觀沒有意義

為什么? 因為一旦對它們進行歸一化,神經網絡就應該學會根據歸一化的值來創建預測。

所以你很安全。

順便說一句,您通常將使用數據的均值和標准差進行歸一化。


對於回歸問題,情況相同。 至少到目前為止我創建的架構。 例如:創建模型M1以學習求和+運算。 您提供一對值a,b ,並將總和c設置為預測值。

如果您用a/10, b/10訓練另一個模型M2,然后再次提供c作為預測,則意味着您對輸入進行了歸一化。

在推理階段,您要做的就是對輸入進行歸一化 (除以10),然后獲得正確的輸出。

在此處輸入圖片說明

暫無
暫無

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

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