Given a tensor of multiple dimensions, how do I flatten it so that it has a single dimension?

Eg:

```
>>> t = torch.rand([2, 3, 5])
>>> t.shape
torch.Size([2, 3, 5])
```

How do I flatten it to have shape:

```
torch.Size([30])
```

Given a tensor of multiple dimensions, how do I flatten it so that it has a single dimension?

Eg:

```
>>> t = torch.rand([2, 3, 5])
>>> t.shape
torch.Size([2, 3, 5])
```

How do I flatten it to have shape:

```
torch.Size([30])
```

## TL;DR:

Use

`torch.flatten()`

which was introduced in v0.4.1 and documented in v1.0rc1:For v0.4.1 and earlier, use

`t.reshape(-1)`

.With

`t.reshape(-1)`

:If the requested view is contiguous in memory this will equivalent to

`t.view(-1)`

and memory will not be copied.Otherwise it will be equivalent to

`t.`

`contiguous()`

`.view(-1)`

.Other non-options:

`t.view(-1)`

won't copy memory, but may not work depending on original size and stride`t.resize(-1)`

gives`RuntimeError`

(see below)`t.resize(t.numel())`

warning about being a low-level method (see discussion below)(Note:

`pytorch`

's`reshape()`

may change data but`numpy`

's`reshape()`

won't.)`t.resize(t.numel())`

needs some discussion. The`torch.Tensor.resize_`

documentation says:Given the current strides will be ignored with the new

`(1, numel())`

size, the order of the elementsmayapppear in a different order than with`reshape(-1)`

. However, "size"maymean the memory size, rather than the tensor's size.It would be nice if

`t.resize(-1)`

worked for both convenience and efficiency, but with`torch 1.0.1.post2`

,`t = torch.rand([2, 3, 5]); t.resize(-1)`

gives:I raised a feature request for this here, but the consensus was that

`resize()`

was a low level method, and`reshape()`

should be used in preference.