我正在尝试使用 Keras 设计一个优先考虑预测性能的神经网络,但通过进一步减少每层的层数和节点数,我无法获得足够高的准确度。我注意到我的很大一部分体重实际上为零(> 95%)。有没有办法修剪密集层以希望减少预测时间?
4 回答
不是专门的方式:(
目前没有简单的(专用)方法可以使用 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
我自己没有尝试过,但文档声称它具有删除或插入节点的功能。
此外,在查看了一些关于剪枝的论文后,似乎许多研究人员创建了一个具有更少通道(或更少层)的新模型,然后将权重从原始模型复制到新模型。
请参阅此 tf.keras 专用工具。https://www.tensorflow.org/model_optimization/guide/pruning
正如概述所暗示的,对延迟改进的支持是一项正在进行的工作
编辑:Keras -> tf.keras 基于 LucG 的建议。
如果您将单个权重设置为零,这不会阻止它在反向传播期间更新吗?从一个时期到下一个时期,重量不应该保持为零吗?这就是为什么在训练之前将初始权重设置为非零值的原因。如果要“删除”整个节点,只需将该节点输出上的所有权重设置为零,这将防止该节点在整个训练过程中对输出产生任何影响。