Hi there,
This question is about loss function.
I have an integral equation which is shown below: Screen Shot 2020-10-05 at 12.21.53 PM820×134 4.72 KB
where y(x) is a one dimension vector. I want to use the above equation as my loss function, and here is my solution. I use matrix multiplication to rewrite it:
def my_loss (yhat, x, matrix):
    L = len(yhat)

    first_term = (2 * pi / L) * (torch.mm(yhat.T, torch.log(yhat)))
    second_term = (4 * pi ** 2/ L ** 2) * torch.mm(torch.mm(yhat.T, matrix), yhat)

    loss = first_term + second_term
    return loss

It works and the training result is not bad, but I find that the above code will cause a little bit of error. for example: if the y(x) = sin(x)**2, the integral vaule of first term is -1.21358, but the vector multiplication will gives me -1.2041.
Does anyone know better ways to do this job?