keras 你如何去正常化?

g9icjywg  于 2023-04-12  发布在  其他
关注(0)|答案(2)|浏览(117)

一旦你对你的数据进行了归一化,使值在0-1之间,你如何去归一化它,以便你可以解释结果?
所以当你对数据进行归一化,并将其输入到网络中,得到归一化数据的输出时,你如何反转归一化以获得原始数据?

ldxq2e6h

ldxq2e6h1#

如果你有一些数据d,你通过做(类似于)

min_d = np.min(d)
max_d = np.max(d)
normalized_d = (d - min_d) / (max_d - min_d)

你可以通过反转归一化来反归一化。在这种情况下

denormalized_d = normalized_d * (max_d - min_d) + min_d
4nkexdtk

4nkexdtk2#

此外,由于问题被标记为keras,如果您要使用其内置的规范化层规范化数据,则还可以使用规范化层对其进行反规范化。
您需要将反转参数设置为True,并使用原始图层的均值和方差,或使其适应相同的数据。

# Create a variable for demonstration purposes
test_var = pd.Series([2.5, 4.5, 17.5, 10.5], name='test_var')

#Create a normalization layer and adapt it to the data
normalizer_layer = tf.keras.layers.Normalization(axis=-1)
normalizer_layer.adapt(test_var)

#Create a denormalization layer using the mean and variance from the original layer
denormalizer_layer = tf.keras.layers.Normalization(axis=-1, mean=normalizer_layer.mean, variance=normalizer_layer.variance, invert=True)

#Or create a denormalization layer and adapt it to the same data
#denormalizer_layer = tf.keras.layers.Normalization(invert=True)
#denormalizer_layer.adapt(test_var)

#Normalize and denormalize the example variable
normalized_data = normalizer_layer(test_var)
denormalized_data = denormalizer_layer(normalized_data)

#Show the results
print("test_var")
print(test_var)

print("normalized test_var")
print(normalized_data)

print("denormalized test_var")
print(denormalized_data)

查看更多:https://www.tensorflow.org/api_docs/python/tf/keras/layers/Normalization

相关问题