簡體   English   中英

看起來像 keras 規范化層沒有正確反規范化

[英]Looks like keras Normalization layer doesn't denormalize properly

我想使用 keras 規范化層來“非規范化”我的 output。這個 object 的文檔說參數“invert=True”就是這樣做的,但它的行為根本不像我想的那樣......

我試圖找出問題並表明它不計算歸一化的逆

import numpy as np
import tensorflow as tf
from tensorflow import keras
from keras import layers

norm = layers.Normalization()
denorm = layers.Normalization(invert=True)
y = np.array([[10.0], 
              [20.0], 
              [30.0]])
norm.adapt(y)
denorm.adapt(y)

在這里,我檢查了均值和方差,看起來兩者是一樣的,現在一切都很好。

print(norm(20))
print(denorm(0))

我得到 output 0 和 163.29932 而不是 0 和 20... 看起來非規范化添加了平均值,然后乘以 std 而不是先乘以 std。

keras 版本可能與此處相關:

print(keras.__version__)

Output: '2.10.0'

我查看了代碼,發現確實是錯誤的(加上均值再乘以標准差)。

我打開了一個 pull request 來修復這個問題,它已經被接受,所以它應該會在短時間內修復。

暫無
暫無

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

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