增加sigmoid结果?

时间:2015-08-12 10:46:26

标签: c# math neural-network logistics

我对如何以正确的方式提升sigmoid结果感到困惑。 例如,我的NN的输入在0,10之间。我把它缩放到-4,4之间作为sigmoid的有效输入范围,我得到的结果是0.83201。 现在我想将它重新缩放到0,10之间。

我认为sigmoid的反转是logit但是当我使用它时会发生有趣的事情:

float u = sig.LogSigmoid(sig.InputScaler(3,0f,10f,-4f,4f));
Debug.Log(-Mathf.Log(u/(1-u)));

结果:1​​.6。 而

float u = sig.LogSigmoid(sig.InputScaler(4,0f,10f,-4f,4f));
Debug.Log(-Mathf.Log(u/(1-u)));

结果为:0.8。

编辑: 好了一些摆弄后,我发现Logit确实有效,只返回我的缩放输入:-)。 所以对于sigmoid +降尺度:

float u = sig.LogSigmoid(sig.InputScaler(6,0f,10f,-4f,4f));

以下logit + upscaling完美无缺:

Debug.Log(sig.InputScaler(-Mathf.Log((1-u)/u),-4f,4f,0f,10f));

InputScaler是:

public float InputScaler(float x, float minFrom, float maxFrom, float minTo, float maxTo)
{
    float t = (((x-minFrom)*(maxTo-minTo))/(maxFrom-minFrom))+minTo;
    return t;
}

1 个答案:

答案 0 :(得分:1)

要重新缩放sigmoid的输出(在[0,1]范围内)到[0,10],您当然可以使用sig.InputScale(u,0f,1f,0f,10f),但当然在这种情况下缩放也很简单为u*10f

但是,我不明白为什么你说反sigmoid。如果要重新缩放函数的输出,则永远不需要反函数。

另一方面,如果你试图反转包含输入缩放的sigmoid,那么你需要将logit的输出从[-4,4]缩小到[0,10]:I.e。 sig.InputScale(Mathf.Log(u/(1-u)),-4f,4f,0f,10f)