多层神经网络无法产生负的输出值

在模型训练过程中发现输出值全部为正,无法产生负值。训练集中目标值有约一半为负值,loss function 为 torch.nn.MSEloss(),模型使用pytorch包实现。

模型为少数几个GoogLeNet的核心模块Inception Module组成,前期使用了大量的relu激活函数,但是最后的输出层为torch.nn.Linear(),无激活函数。

不知道时什么原因。

img


这个是有可能导致结果都为正的,torch.nn.Linear()一般都是线性相加,正数和大于负数结果也是正数啊,还有就是检查一下有无torch.abs()之类的操作

但是最后的输出层为torch.nn.Linear()
佳节个tanh激活函数吧,tanh适合所有的场景

经过调试,发现是其他训练(超)参数和数据的问题,例如在数据集中正值的绝对值整体上比负值的要大,最后一层为linear是可以产生负权重的。