Just recently I have upgraded my Torch build from 0.1.11 to 0.1.12. Since I have done so, however, I can’t perform a backward pass on a loss object. I get the error: AttributeError: ‘BCELoss’ object has no attribute ‘backward’.
Below is the code I use.
critBCE = nn.BCEloss()
for i, (img, lab) in enumerate(source_loader):
# train the discriminator on source examples
Yd = Variable(lab)
X2 = Variable(img)
output = dis.forward(X2)
err_real += critBCE.forward(output.float(), Yd.float())
t = critBCE.backward(output.float(), Yd.float())
dis.backward(X2, t)
This is the error that is raised:
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-15-e0dbb18c7e0e> in <module>()
48 output = dis.forward(X2)
49 err_real += critBCE.forward(output.float(), Yd.float())
---> 50 t = critBCE.backward(output.float(), Yd.float())
51 dis.backward(X2, t)
52
/home/daniel/miniconda3/envs/py3/lib/python3.5/site- packages/torch/nn/modules/module.py in __getattr__(self, name)
AttributeError: 'BCELoss' object has no attribute 'backward'
Anyone has an idea? Does it have to do with the upgrade?