This is a failure case because fake here is a non-leaf Variable and torch.autograd.backward has a dependency analysis bug. I am going to open a bug report for this.
For now, here is your workaround, and good luck with your deadline:
noise.resize_(opt.batchSize, nz, 1, 1).normal_(0, 1)
noisev = Variable(noise)
fake_v = netG(noisev)

fake = Variable(fake_v.data, requires_grad=True)
errG = netD(fake)
rec = netA(fake)
newd = rec.data - fake.data
errG.backward()
fake_v.backward(fake.grad.data + (-opt.daeWeight * newd))

For reference, here’s the opened issue: https://github.com/pytorch/pytorch/issues/1605 22