【问题标题】:How to prune certain weights (rather than freeze a layer) with Keras?如何使用 Keras 修剪某些权重(而不是冻结层)?
【发布时间】:2019-03-12 07:37:05
【问题描述】:

我正在尝试使用 Keras 修剪深度模型中的一些连接。这些连接位于不同的位置和不同的全连接层,因此设置layer.trainable=False 对我不起作用。

  1. 那么如何在 Keras 中修剪这些连接(在训练期间将它们的权重冻结为 0)?我是否需要编写自己的图层以及如何编写?

  2. 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


【解决方案1】:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-22
    • 1970-01-01
    • 1970-01-01
    • 2021-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-03
    相关资源
    最近更新 更多