【问题标题】:How to train rebel neurons?如何训练反叛神经元?
【发布时间】:2020-04-06 14:50:09
【问题描述】:

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

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

如下图所示,我检测到我的大多数神经元的权重梯度在几个 epoch 后收敛到 cero。但是很少有明显的例外仍然反叛(第一张图像上的垂直线将权重除以神经元)。

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

【问题讨论】:

    标签: python numpy neural-network jupyter backpropagation


    【解决方案1】:

    您可以向给定的内核(密集层中的权重矩阵)添加一个约束。 使用这些约束之一,可以将权重归一化为给定的用户定义范围。 见:TensorFlow.Keras Constraints

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-20
      • 2019-09-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多