I tried also the following approach:
Tanh activation function, with 1024 neurons at the end. Because of tanh each value is in the range [-1, 1] and each value is in the form of (cos(theta_1), sin(theta_1)) pairs up to theta_512. So, 1024 values in total. And of course, x = cos(theta), y = sin(theta).
Then tried to minimize as before:

loss_1 = (x ^ 2 + y ^ 2 - 1) ^ 2, to penalize values outside the unit circle
loss_2 = 1 - cos(atan2(y/x) - target), which is 0 if output = target

So loss = loss_1 + loss_2 and that’s what I’m back propagating. Target is only a single value for each transducer in radians.
Unfortunately results are the same. My loss never goes below 1.