So, it seems that my custom function is completely fine it was a loss function that was causing the issue?
Also, the “recursion error” I got was due to make_dot from torchviz when trying to build a graph which has a network that calls its hessian 1000 times… which makes sense why it causes an error!
So, it seems that all the error was due to my loss function not accommodating the fact that my laplacian is calculated with a batch of 1!
Thank you ever so much with putting up with me! Now I look back on it, it was kinda sitting their looking me right in the face and hiding in plain sight! 
But that just begs another question, why does PyTorch’s det function handle that fine then?