super(MultiScaleEdgeEnergy, self).__init__()
k = torch.exp(- torch.tensor([[-2., -1., 0., 1., 2.]])**2 / 2)
k = (k.t() @ k).view(1, 1, 5, 5)
- self.register_buffer('gaussian_5x5', k / k.sum())
+ self.gaussian_5x5 = torch.nn.Parameter(k / k.sum()).requires_grad_(False)
def forward(self, x):
u = x.view(-1, 1, x.size(2), x.size(3))
ref_output = model(ref_input).detach()
for n in range(5):
- input = ref_input.new_empty(ref_input.size()).uniform_(-0.01, 0.01).requires_grad_()
+ input = torch.empty_like(ref_input).uniform_(-0.01, 0.01).requires_grad_()
optimizer = torch.optim.Adam( [ input ], lr = 1e-2)
for k in range(1000):
output = model(input)