我正在尝试使用Keras设计一个优先考虑预测性能的神经网络,并且通过进一步减少每层的层数和节点数量,我无法获得足够高的精度。我注意到我的很大一部分重量实际上是零(> 95%)。有没有办法修剪密集层以期减少预测时间?
答案 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
正如概述所暗示的那样,对延迟改进的支持仍在进行中