21

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

4

4 回答 4

7

不是专门的方式:(

目前没有简单的(专用)方法可以使用 Keras 执行此操作。

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

您可能还对这篇论文感兴趣:https ://arxiv.org/pdf/1608.04493v1.pdf 。

于 2017-02-01T02:31:51.707 回答
6

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

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

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

于 2018-08-03T23:39:47.873 回答
1

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

正如概述所暗示的,对延迟改进的支持是一项正在进行的工作

编辑:Keras -> tf.keras 基于 LucG 的建议。

于 2019-06-05T02:40:37.170 回答
0

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

于 2019-05-10T00:39:23.710 回答