Yes I am 100% sure
The output of
def forward(ctx, x, y):
    ctx.save_for_backward(x,y)
    print 'CMul.forward'
    print 'x', x.size(), type(x.data)
    print 'y', x.size(), type(x.data) 
    return x * y

is
CMul.forward
x torch.Size([732, 1, 1, 128, 128]) <class ‘torch.cuda.ZFloatTensor’>
y torch.Size([732, 1, 1, 128, 128]) <class ‘torch.cuda.ZFloatTensor’>
There must be some conversion happening or some type is recognized incorrectly. I know it’s hard to tell without knowing my modifications, but maybe an educated guess already helps.
How are the tensors wrapped into python types? Could the error happen in the unwrapping?