You can pass the standard arguments to new as to a new Tensor:
a = torch.randn(10, 10).cuda()
print(a)
b = a.new(13, 19, 23).long()
print(b)

Would this work?
EDIT: You could of course pass a numpy array or something else to the constructor.
Could you post your use case? I have the feeling, I’m not really understanding your problem and thus posting useless approaches.