softmax层的裁剪阈值

数据挖掘 神经网络 深度学习 张量流
2022-03-01 20:21:27

我最近看到一篇关于使用(相当简单的)LSTM 进行情绪分类的论文,它将其网络设置描述为:

我们随机化均匀分布的参数 U(-0.003, 0.003),设置 softmax 层的裁剪阈值为 200,学习率设置为 0.01。

我正在尝试用我用 Tensorflow 编写的代码来重现他们的结果。不得不说,“将softmax层的裁剪阈值设置为200”的含义我觉得有点混乱。200???

有人可以向我解释一下,以便我知道如何使用 Tensorflow 来实现吗?非常感谢!!!

更新,好的,所以我找到了他们的代码,下面是他们如何使用这个 softmax 层的裁剪阈值:

for(int k = 0; k < softmax.outputG.length; k++)
    softmax.outputG[k] = 0.0;
softmax.outputG[goldPol] = 1.0 / softmax.output[goldPol];

// if ||g|| >= threshold, then g <- g * threshold / ||g|| 
if(Math.abs(softmax.outputG[goldPol]) > clippingThreshold)
{
    if(softmax.outputG[goldPol] > 0)
        softmax.outputG[goldPol] =  clippingThreshold;
    else
        softmax.outputG[goldPol] =  -1.0 * clippingThreshold;
}

我仍然不能说我完全理解这个阈值的使用..

1个回答

我认为他们所做的只是渐变剪辑。它将softmax层的梯度保持在[-200,200]之间