Resize PyTorch Tensor
I am currently using the tensor.resize() function to resize a tensor to a new shape t = t.resize(1, 2, 3).

This gives me a deprecation warning:


  non-inplace resize is deprecated


Hence, I wanted to switch over to the tensor.resize_() function, which seems to be the appropriate in-place replacement. However, this leaves me with an


  cannot resize variables that require grad


error.
I can fall back to

from torch.autograd._functions import Resize
Resize.apply(t, (1, 2, 3))


which is what tensor.resize() does in order to avoid the deprecation warning.
This doesn't seem like an appropriate solution but rather a hack to me.
How do I correctly make use of tensor.resize_() in this case?

You can instead choose to go with tensor.reshape(new_shape) or torch.reshape(tensor, new_shape) as in:

# a `Variable` tensor
In [15]: ten = torch.randn(6, requires_grad=True)

# this would throw RuntimeError error
In [16]: ten.resize_(2, 3)
---------------------------------------------------------------------------
RuntimeError                              Traceback (most recent call last)
&lt;ipython-input-16-094491c46baa&gt; in &lt;module&gt;()
----&gt; 1 ten.resize_(2, 3)

RuntimeError: cannot resize variables that require grad




The above RuntimeError can be resolved or avoided by using tensor.reshape(new_shape)

In [17]: ten.reshape(2, 3)
Out[17]: 
tensor([[-0.2185, -0.6335, -0.0041],
        [-1.0147, -1.6359,  0.6965]])

# yet another way of changing tensor shape
In [18]: torch.reshape(ten, (2, 3))
Out[18]: 
tensor([[-0.2185, -0.6335, -0.0041],
        [-1.0147, -1.6359,  0.6965]])

