Hi,
There is a small difference between theory and practice here:

In theory yes, backward should work only with 1D Tensors and vector Jacobian product. Where the Jacobian assumes 1D input and 1D output.
In practice, your input is not a 1D and the output is not either. So you will get a dLoss/dy which is not 1D but the same shape as y. and you should return something that is the same shape as params. But it should be computed as if these were 1D * 2D matrices.

That being said, keep in mind that if your net is a function f with input x and output y (assumed 1D here). Then what you will compute by doing y.backward(v) is v.t() J where J is the jacobian of f of size (len(y), len(x)).