神经网络输出相同的值/归一化

数据挖掘 机器学习 神经网络 反向传播 正常化
2022-03-04 18:41:42

我有一个简单的神经网络,无论输入如何,它都输出相同的值在训练期间,它表现正常,训练和验证损失减少到最低值。

数据范围为 [-1000, +1000]。该模型是一维卷积网络。如果有用:

    train_loss = lcategorical_crossentropy(...).mean()

    net = InputLayer((None, net_z, net_x), input_var=input_var)

    net = ConvLayer(net,  16, 9, pad='same' )#, flip_filters=False)
    net = ConvLayer(net,  16, 9, pad='same')#, flip_filters=False)

    net = DenseLayer(net,   num_units=32)
    net = DropoutLayer(net, p=0.5)

    net = DenseLayer(net, num_units=2, nonlinearity=None)
    net = NonlinearityLayer(net, softmax)

这已通过标准化[-1, 1] 中的数据得到纠正

这背后的原因是什么?我猜反向传播被卡住了,但是我在哪里可以深入了解呢?

1个回答

如果它适用于您的数据,我建议通过以下方式进行标准化: input = (input-median(input)) / std(input)

还尝试使用较小的批量进行初始训练。并三次检查您的数据的实际外观。标签也是如此。

根据框架,您还应该检查标签的数据类型。一些不幸的计算可能会将您的浮点概率转换为 int,从而杀死任何有意义的输出。

我可以推荐 Andrew Ng 著名的 Coursera 讲座。它们可以很好地了解神经元内发生的情况。