So you mean the resume() function is not doing what you want? It seems to be plotting the activations no?
Unrelated note, when you do self.dc.weight = nn.Parameter(w), you actually detach w implicitly. That mens that no gradient will ever flow black to your self.embeddings and self.wt.
I guess this is not what you want right?
To fix this, you should delete the wieghts of the convolution after initialization so that they are not registered as learnable parameters:
self.dc = nn.Conv2d(64, 1 , kernel_size = 1, stride=1, padding=1)
del self.dc.weight # The forward pass will set this appropriately
# Also do you want to change self.dc.bias? You seem to ignore it here.

Then during the forward, you can set the weights without using a Parameter:
self.dc.weight = w
v_out = self.dc(v)
# The next line is not strictly necessary but
# it is a good practice to avoid having side effects in forward method
del self.dc.weight

Second node:
You don’t have to run your backbone multiple times, you can compute v once and reuse it !
Similarly, you can compute all the new weights at once. and then just use the for loop from the moment you change the weights onward.