Python 我应该使用tf.keras.utils.normalize来规范化我的目标吗?

Python 我应该使用tf.keras.utils.normalize来规范化我的目标吗?,python,tensorflow,keras,normalization,Python,Tensorflow,Keras,Normalization,处理预测分数的机器学习模型回归问题 通常,例如,在使用定标器进行规范化时,您会获得对定标器的引用,以便以后可以将数据反转回其原始值 使用时,这是(据我所知)以下数据的L2规范化: val target 0 1 10 1 2 20 2 3 30 3 4 40 4 5 50 您将获得以下输出: val target 0 0.13484 0.13484 1 0.26968 0.26968 2 0.40452 0.40452

处理预测分数的机器学习模型回归问题

通常,例如,在使用定标器进行规范化时,您会获得对定标器的引用,以便以后可以将数据反转回其原始值

使用时,这是(据我所知)以下数据的L2规范化:

    val target
0   1   10
1   2   20
2   3   30
3   4   40
4   5   50
您将获得以下输出:

    val     target
0   0.13484 0.13484
1   0.26968 0.26968
2   0.40452 0.40452
3   0.53936 0.53936
4   0.67420 0.67420
因此,我认为没有可能回到原来的
10,20,30,40,50系列


Q:如果我想将预测目标反转回其原始量表,我是否应该使用MinMaxScalar单独标准化分数?

神经网络激活通常与要标准化的输入一样。规范化网络中节点的输入有助于防止所谓的消失(和爆炸)梯度

通常,对输入执行批标准化,但它也有其自身的缺点,如由于额外计算而导致预测速度较慢。相反,您可以使用您提到的任何其他规范化技术

在您的示例中,不要同时规范化输入和目标,而是只规范化输入,如下所述

数据帧:

val target
0   1   10
1   2   20
2   3   30
3   4   40
4   5   50
    val target
0   0.13484 10
1   0.26968 20
2   0.40452 30
3   0.53936 40
4   0.67420 50
规范化输入:

df["val"] = tf.keras.utils.normalize(df["val"].values,axis=-1, order=2 )[0]
输入规范化数据帧:

val target
0   1   10
1   2   20
2   3   30
3   4   40
4   5   50
    val target
0   0.13484 10
1   0.26968 20
2   0.40452 30
3   0.53936 40
4   0.67420 50

您需要规范化输入,而不是输出。所以,
target
根本不应该被规范化?但是我不能在最后一层上使用sigmoid函数。此外,我想将我所有的核范围定在0-1之间。sigmoid函数用于分类问题,它是0还是1。但是在回归问题中,你需要处理一个连续的数字范围。但是Sigmoid范围是0-1,如果分数在0-1之间,我不能在最后一层使用它吗?好的,这是我的观点。在[0,1]上定义输出的所有实数值都定义了sigmoid。它对于输出为
0
1
的二进制分类非常有用。在回归中,这真的很伤人。。为什么?因为
sigmoid(10)=0.9999
,和
sigmoid(20)=0.9999
sigmoid(30)=0.9999
。。。这就是为什么