上下文
假设我们有一个简单的3层前馈网络。第一个线性层的隐藏大小是100000,W1[input_size, 100000]
,它显然太大了,我想关闭一些选定的神经元。
预期结果
例如,在修剪选定的神经元之后,我们得到一个较小的网络,第一个线性层大小为500,这个较小的网络具有与大型网络相似的预测能力。
我的实施:
根据一些标准(在每次反向传播更新后应用于检查权重相似性的一些指标),我已经选择了一些我想要关闭的神经元索引,例如[1,7,8 ...]
。
我通过设置W1
将W1[:, 1, 7, 8 ...] = 0
的相应权重归零,其中0是矩阵。这样做,它保证不会通过这些神经元传递信息。我是否也应该做一些关于反向传播的事情?除了反向传播,我可能还需要做什么?
由于我使用的是pytorch
,如果你能用一些pytorch
(其他框架,如tensorflow
,Keras也很好)说明,那将会很棒。