在 Keras 中修剪

Pruning in Keras

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

不是专用方式:(

目前没有使用 Keras 的简单(专用)方法。

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

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

看看 Keras Surgeon: https://github.com/BenWhetton/keras-surgeon

我自己没试过,但是文档上说它有删除或插入节点的功能

另外,在看了一些关于剪枝的论文后,似乎很多研究人员创建了一个通道更少(或层数更少)的新模型,然后将原始模型中的权重复制到新模型中。

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

查看 tf.keras 的专用工具。 https://www.tensorflow.org/model_optimization/guide/pruning

如概述所示,对延迟改进的支持正在进行中

编辑:Keras -> tf.keras 根据 LucG 的建议。