Still very new to PyTorch, but loving the style.
I am stuck on a small problem where I cannot get the gradient or call backward() when using masked_select().  I am willing to use index_select() if I can figure out how to get the index.  I feel close with nonzero() but can’t quite get it to work.
This works, when I build the index by hand:

import torch from torch.autograd import Variable import numpy as np x = np.array([ 0.00834103, 0.00212306, -999.0, 0.00149333, 0.00899409]) x = Variable(torch.from_numpy(x.astype('float32')),requires_grad=True) cond = Variable(torch.from_numpy(np.array([0,1,3,4]).astype('int32'))) y = x.index_select(0,cond.long()) out = y.sum() out.backward() print x.grad

When I try to build the condition dynamically and use masked_select, it fails with a NotImplementedError:
cond = (x>-999.) y = x.masked_select(cond)
So I figured I would get the index and then send that to index_select() but I get a TypeError here:
cond_idx = torch.nonzero(cond) *** TypeError: Type Variable doesn't implement stateless method nonzero
Any ideas how to get this to work?