想象一下,我有一个准确率很高的 TensorFlow CNN 模型,但过滤器可能太多了:
有没有办法确定哪些过滤器对输出的影响更大?我认为这应该是可能的。至少,如果过滤器 A 有一个 0,它只乘以过滤器 B 的输出,那么过滤器 B 与过滤器 A 无关。特别是,我在考虑 2d 数据,其中 1 维与时间相关,并且其他相关的功能(如 one-hot char)。
有没有办法从经过训练的模型中消除不太相关的过滤器,并保持模型的其余部分完好无损?
它有用还是有更好的方法?
想象一下,我有一个准确率很高的 TensorFlow CNN 模型,但过滤器可能太多了:
有没有办法确定哪些过滤器对输出的影响更大?我认为这应该是可能的。至少,如果过滤器 A 有一个 0,它只乘以过滤器 B 的输出,那么过滤器 B 与过滤器 A 无关。特别是,我在考虑 2d 数据,其中 1 维与时间相关,并且其他相关的功能(如 one-hot char)。
有没有办法从经过训练的模型中消除不太相关的过滤器,并保持模型的其余部分完好无损?
它有用还是有更好的方法?
注意:所有观察和结果均来自论文The Lottery Ticket Hypothesis: Finding Sparse, Trainable Neural Networks。
一一回答您的问题:
TL;DR:消除不必要的权重使模型比原始模型表现更好。
这里还有TensorFlow 代码。