在Keras修剪

时间:2017-01-31 13:14:13

标签: python-3.x neural-network keras pruning

我正在尝试使用Keras设计一个优先考虑预测性能的神经网络,并且通过进一步减少每层的层数和节点数量,我无法获得足够高的精度。我注意到我的很大一部分重量实际上是零(> 95%)。有没有办法修剪密集层以期减少预测时间?

4 个答案:

答案 0 :(得分:6)

不是专门的方式:(

目前没有简单(专用)的方式与Keras这样做。

https://groups.google.com/forum/#!topic/keras-users/oEecCWayJrM正在进行讨论。

您可能也对本文感兴趣:https://arxiv.org/pdf/1608.04493v1.pdf

答案 1 :(得分:4)

看看Keras外科医生: https://github.com/BenWhetton/keras-surgeon

我自己还没有尝试过,但是文档声称它具有删除或插入节点的功能。

另外,在查看了一些有关修剪的论文后,似乎许多研究人员创建了一个具有较少通道(或较少层)的新模型,然后将权重从原始模型复制到新模型。

答案 2 :(得分:0)

如果将单个权重设置为零,这是否会阻止它在反向传播期间被更新?那个重量不应该从一个时期到下一个时期保持零吗?这就是为什么在训练之前将初始权重设置为非零值的原因。如果要“删除”整个节点,只需将该节点输出的所有权重设置为零,这将防止该节点在整个训练过程中对输出产生任何影响。

答案 3 :(得分:0)

请参阅此Keras专用工具。 https://www.tensorflow.org/model_optimization/guide/pruning

正如概述所暗示的那样,对延迟改进的支持仍​​在进行中