Hi!

I was wondering if there’s a proper way to learn the parameters of a sinusoid by gradient descent?

Here’s an example setup:

```
x = torch.arange(0, 5, 1 / sr) # =5s of audio
y = torch.sin(2 * np.pi * 2.85 * x) # want to get sinusoid with frequency 2.85
f = nn.Parameter(torch.tensor(2.0)) # initialize frequency parameter as 2.85
opt = torch.optim.AdamW([f], lr=0.001)
loss = nn.MSELoss()
for i in range(100):
out = torch.sin(2 * np.pi * f * x)
l = loss(out, y)
l.backward()
opt.step()
opt.zero_grad()
```

This won’t learn the correct value for `f`

(2.85), but rather stay around 2.

Is there a way to set this up so it can learn through a periodic function?

Thanks for any input!

edit: simplified code somewhat