繁体   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