如何训练反叛神经元?

问题描述 投票:-1回答:1

我正在通过mmnist时尚数据集训练一个非常基本的NN。我正在使用自己的代码,这并不重要。我使用了一个类似于ADAM的简化算法,并使用了一个精确的公式(train_value-real_value)** 2进行训练和错误计算。我为每个权重应用基本的反向传播算法,并为每个训练图像分析网络权重的1/5。我只使用了一个128层,就像基本示例中的tensorflow中的乞in一样,加上输入和输出层(最后一层使用softmax,第一个标准化为0-1)

我根本不是专家,在测试集上,我只能训练我的网络达到77%的准确性。

如下面的图像所示,我检测到我的大多数神经元的权重梯度在几个时期后收敛到零。但是,很少有明显的例外,它们只是保持反叛(第一幅图的垂直线将权重除以神经元)。

您能推荐我一些通用的技术来训练流氓神经元而不影响其他人吗?

enter image description here

enter image description here

python numpy neural-network jupyter backpropagation
1个回答
1
投票

您可以将约束添加到给定的内核(Dense层中的权重矩阵)。使用这些约束之一,可以将权重标准化为给定的用户定义范围。请参阅:TensorFlow.Keras Constraints

此外,您可以尝试使用正则化器,以防止模式过度拟合,这可能由一些非常大(绝对)的权重值指示。为此,请参见例如L1或L2稳压器:TensorFlow.Keras Regularizers

© www.soinside.com 2019 - 2024. All rights reserved.