【问题标题】:How to make new weight parameter in pytorch?如何在pytorch中制作新的权重参数?
【发布时间】:2021-04-21 11:04:00
【问题描述】:

在这个 SS_wrapper 类中,我必须计算新的权重参数。

reset_weights(self) 函数中,我通过torch.nn.init.uniform_(self.fixed_fb_weights) 创建了一个新的权重(在后面使用的权重)。但是,我不知道如何用正向权重符号和乘法来做到这一点。我很好奇如何通过将self.sign * self.fixed_fb_weights 放入self.fixed_fb_weights 中来制作并工作。

现在,self.fixed_fb_weights 中没有显示乘号的结果,而只有torch.nn.init.uniform_。如何解决?

【问题讨论】:

    标签: python pytorch


    【解决方案1】:

    我解决了。 我创建了一个新函数和参数。 在初始化函数中,我在self.reset_weights() 下添加了self.feedbak_weight = nn.Parameter(self.sign_weights())。 而新功能sign_weights()

        def sign_weights(self):
            return self.sign*self.fixed_fb_weights
            #print('sign_weights result : ', self.fixed_fb_weights)
    

    和SS_hook_pre函数,它返回self.feedback_weight

    def SS_hook_pre(self, grad):
            if self.output_grad is not None:
                if (self.layer_type == "fc"):
                    return self.output_grad.mm(self.feedback_weight)
                    #return self.output_grad.mm(self.w)
                elif (self.layer_type == "conv"):
                    
                    return torch.nn.grad.conv2d_input(self.x_shape, self.feedback_weight, self.output_grad, self.stride, self.padding)
                    
                else:
                    raise NameError("=== ERROR: layer type " + str(self.layer_type) + " is not supported in FA wrapper")
            else:
                return grad
    

    【讨论】:

      猜你喜欢
      • 2019-05-01
      • 2018-10-19
      • 2019-06-24
      • 1970-01-01
      • 2019-06-12
      • 2020-05-26
      • 2019-05-06
      • 2018-09-01
      • 1970-01-01
      相关资源
      最近更新 更多