修剪在Keras

Mir*_*ac7 16 neural-network pruning python-3.x keras

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

gro*_*ina 6

不是专门的方式:(

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

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

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

  • 老实说,我不相信改变框架会有多大帮助。据我所知,无论是 tensorflow 还是 theano 都没有实现这种功能。尽管如此,您仍然可以手动计算出一些东西……您设置权重的绝对值的阈值,将它们从层中删除,并在这种情况下删除与您刚刚删除的神经元相对应的权重。这听起来并不直截了当,但我认为也没有什么大秘密。 (2认同)

mos*_*shi 6

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

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

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