ShlezingerLab / SubspaceNet

34 stars 8 forks source link

what is trained in Neural Netsworks? #4

Open contacy opened 2 months ago

contacy commented 2 months ago

Hi, I noticed that the dataset for the neural network consists of a covariance matrix (call it R_tau) and the true doa (denoted by Y). It is then fed into the DNN. However, the output of the DNN needs to go through a gram_diagonal_overload function first, where the multiplication of the output of the neural network and its hermite matrix is implemented. So does this mean that the neural network sees R_tau as an array receiving matrix in training? I don't quite understand why this is necessary here. image

image

I have tried to remove this gram_diagonal_overload function and then the neural network's loss can't be reduced (or the reduction is not obvious), and I didn't find any theoretical explanation for this in the paper. image If someone can answer my question that would be appreciated!

zhiim commented 3 days ago

image Explained in their paper.
Maybe the Post-Processing is used to make troch.linalg.eig more stable during autograd. Anyway it's still unstable computing the gradient of troch.linalg.eig in my training config using their model.