[英]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.