Why do you put everything in Variables just to unpack it at the end?
Also do you declare both forward and backward as @staticmethod and use your Function with the .apply() method?
And which version of Pytorch are you running?