Hi Peter sorry about the delay. After an epoch, the grad of ‘param_a’, my noise variance value looks like the following:

model.wiener_filter.param_a.grad
tensor(0.0045)
T:tensor(0.0045)
data:tensor(0.0045)
device:device(type='cpu')
dtype:torch.float32
grad:None
grad_fn:None
is_cuda:False
is_leaf:True
is_mkldnn:False
is_quantized:False
is_sparse:False
layout:torch.strided
name:None
names:()
ndim:0
output_nr:0
requires_grad:False
shape:torch.Size([])
_backward_hooks:None
_base:None
_cdata:1354585323136
_grad:None
_grad_fn:None
_version:0

The intialisation sets the tensor to 0.05 so it seems to be doing something! Thanks a lot.