问题描述
因为要了解free layer到底有没有停止梯度的计算, 就用了modeld的2个模块A 启用了freeze, 另一个B未启用 .
接着在backward前后打印了state_dict()[“weight”].grad 发现无论AB, 在backpropagation前后一直是None , 我就以为freezelayer不管用
但是朋友用parameters 的方法打印就有值了 代码如下:
keep_vars=True
//1 可以看到这里我只冻住了模型的A模块 希望的结果应该是A 前后不变 但是B 会变化(这是我写的内置函数, 当输入为true的时候说明不需要让他计算梯度, 也就是require-grad = false)
self.freezeLayer(self.model.A, True)
self.freezeLayer(self.model.B, False)