【发布时间】:2019-03-12 07:37:05
【问题描述】:
我正在尝试使用 Keras 修剪深度模型中的一些连接。这些连接位于不同的位置和不同的全连接层,因此设置layer.trainable=False 对我不起作用。
那么如何在 Keras 中修剪这些连接(在训练期间将它们的权重冻结为 0)?我是否需要编写自己的图层以及如何编写?
PyTorch 等其他工具是否轻松支持这种修剪(或冻结)操作(无需编写我自己的层)?
【问题讨论】:
-
对于 PyTorch,您只需设置:
my_layer.weight.requires_grad = False即可冻结您的层权重(my_layer.bias也需要这样做)。 pytorch.org/docs/0.4.0/notes/… -
@blue-phoenox 好像
my_layer.weight.requires_grad = False冻结了某一层的所有权重,但我需要的是冻结特定的权重,例如第一个神经元之间的连接权重第 1 层和第 2 层中的第一个神经元。 -
啊,好吧,我明白了。以前没试过,你可以看看 pytorch sparse,也许这有点帮助。祝你好运! pytorch.org/docs/stable/sparse.html
标签: tensorflow keras deep-learning pytorch