title: Why does torchvision.utils.make_grid() return copies of the wanted grid?
body: <p>In the below coding example I can not understand why the output tensor , <code>grid</code> has a shape of
  <code>3,28,280</code>. I understand why its <code>28</code> in height and <code>280</code> in width, but not the 3. It seems from running <code>plt.imshow()</code> on all 3 <code>28x280</code> arrays along axis 0 that they are identical copies since printing any 1 of these gives me the image I want.
  Also I do not understand why I can pass <code>grid</code> as an argument to <code>plt.imshow()</code> given that it is supposed to take in a 2D array, not a 3D one as <code>grid</code> clearly is.</p>
  <pre><code>import torch
  import torchvision
  import torchvision.transforms as transforms
  import matplotlib.pyplot as plt
  import numpy as np
  
  train_set = torchvision.datasets.FashionMNIST(
      root = './pytorch_obj_classifier/data/FashionMNIST',
      train = True,
      download = True,
      transform = transforms.Compose([
              transforms.ToTensor()
      ])
  )
  sample = next(iter(train_loader))
  image,label = sample
  print(image.shape)
  
  grid = torchvision.utils.make_grid(image,padding=0, nrow=10)
  print(grid.shape)
  
  plt.figure(figsize=(15,15))
  grid = np.transpose(grid,(1,2,0))
  grid1 = grid[:,:,0]
  grid2 = grid[:,:,1]
  grid3 = grid[:,:,2]
  plt.imshow(grid1,cmap = 'gray')
  plt.imshow(grid2,cmap = 'gray')
  plt.imshow(grid3,cmap = 'gray')
  plt.imshow(grid,cmap = 'gray')
  
  </code></pre>