在Keras实施密集稀疏密集训练

时间:2019-10-27 21:17:39

标签: keras

我想实现DSD:Han等人的Dense-Sparse-Dense training for deep neural networks。简而言之,本文提出了以下训练方案来提高网络准确性:

  1. 像往常一样训练网络,直到收敛为止。
  2. 修剪网络并在稀疏性约束下进行训练。这是通过以绝对方式除去总权重中接近0的百分比来实现的。这些权重将被完全修剪掉,因此不会影响正向或反向传递中的任何计算。
  3. 在训练稀疏网络后,由于稀疏模型已经处于良好的局部极小状态,因此使用0重构修剪的权重并使用原始学习率的1/10训练模型。
  4. 利润。您更有可能获得更好的Net。

问题与修剪过程有关。诸如thisthis之类的Tensorflow和Keras示例仅涉及修剪,而不会再次恢复这些权重。这些方法用于压缩模型。因此,实现DSD的最佳方法是忽略相关权重(这些权重在百分比上接近于0作为我们的稀疏性约束),并使它们不进行正向传递或反向传播。还有一个this类似的问题,问是否在每次向前或向后传递之后使用回调将权重手动设置为零是否可以解决问题,但也有人认为权重仍在得到更新。

TL; DR。 tf或keras中是否有任何方法可以使选定的权重不影响前进或后退传递。从字面上看,它们甚至不存在。

谢谢。

0 个答案:

没有答案