title: What's the reason of the error ValueError: Expected more than 1 value per channel?
body: <p><a href="http://forums.fast.ai/t/how-do-we-use-our-model-against-a-specific-image/7661/50" rel="noreferrer">reference fast.ai</a></p>
  
  <p><a href="https://github.com/fastai/fastai/tree/master/fastai" rel="noreferrer">github repository of fast.ai</a>
  (as the code elevates the library which is built on top of <strong>PyTorch</strong>)</p>
  
  <blockquote>
    <p>Please scroll the discussion a bit</p>
  </blockquote>
  
  <p>I am running the following code, and get an error while trying to pass the data to the predict_array function</p>
  
  <p>The code is failing when i am trying to use it to predict directly on a single image but it run's perfectly when that same image is in a <code>test</code> folder</p>
  
  <pre><code>from fastai.conv_learner import *
  from planet import f2
  
  PATH = 'data/shopstyle/'
  
  metrics=[f2]
  f_model = resnet34
  
  def get_data(sz):
      tfms = tfms_from_model(f_model, sz, aug_tfms=transforms_side_on, max_zoom=1.05)
      return ImageClassifierData.from_csv(PATH, 'train', label_csv, tfms=tfms, suffix='.jpg', val_idxs=val_idxs, test_name='test')
  
  def print_list(list_or_iterator):
          return "[" + ", ".join( str(x) for x in list_or_iterator) + "]"
  
  label_csv = f'{PATH}prod_train.csv'
  n = len(list(open(label_csv)))-1
  val_idxs = get_cv_idxs(n)
  
  sz = 64
  data = get_data(sz)
  
  print("Loading model...")
  learn = ConvLearner.pretrained(f_model, data, metrics=metrics)
  learn.load(f'{sz}')
  #learn.load("tmp")
  
  print("Predicting...")
  learn.precompute=False
  trn_tfms, val_tfrms = tfms_from_model(f_model, sz)
  #im = val_tfrms(open_image(f'{PATH}valid/4500132.jpg'))
  im = val_tfrms(np.array(PIL.Image.open(f'{PATH}valid/4500132.jpg')))
  preds = learn.predict_array(im[None])
  p=list(zip(data.classes, preds))
  print("predictions = " + print_list(p))
  </code></pre>
  
  <p><strong>Here's the Traceback I am Getting</strong></p>
  
  <pre><code>  Traceback (most recent call last):
    File "predict.py", line 34, in &lt;module&gt;
      preds = learn.predict_array(im[None])
    File "/home/ubuntu/fastai/courses/dl1/fastai/learner.py", line 266, in predict_array
      def predict_array(self, arr): return to_np(self.model(V(T(arr).cuda())))
    File "/home/ubuntu/src/anaconda3/envs/fastai/lib/python3.6/site-packages/torch/nn/modules/module.py", line 325, in __call__
      result = self.forward(*input, **kwargs)
    File "/home/ubuntu/src/anaconda3/envs/fastai/lib/python3.6/site-packages/torch/nn/modules/container.py", line 67, in forward
      input = module(input)
    File "/home/ubuntu/src/anaconda3/envs/fastai/lib/python3.6/site-packages/torch/nn/modules/module.py", line 325, in __call__
      result = self.forward(*input, **kwargs)
    File "/home/ubuntu/src/anaconda3/envs/fastai/lib/python3.6/site-packages/torch/nn/modules/batchnorm.py", line 37, in forward
      self.training, self.momentum, self.eps)
    File "/home/ubuntu/src/anaconda3/envs/fastai/lib/python3.6/site-packages/torch/nn/functional.py", line 1011, in batch_norm
      raise ValueError('Expected more than 1 value per channel when training, got input size {}'.format(size))
  ValueError: Expected more than 1 value per channel when training, got input size [1, 1024]
  </code></pre>
  
  <p><strong>Things I have Tried</strong></p>
  
  <ul>
  <li><p><code>np.expand_dims(IMG,axis=0) or image = image[..., np.newaxis]</code></p></li>
  <li><p>Tried a different way of reading the image</p>
  
  <pre><code>img = cv2.imread(img_path)
  img = cv2.resize(img, dsize = (200,200))
  img = np.einsum('ijk-&gt;kij', img)
  img = np.expand_dims(img, axis =0) 
  img = torch.from_numpy(img) 
  learn.model(Variable(img.float()).cuda())
  </code></pre></li>
  </ul>
  
  <p>BTW the error still remains </p>
  
  <pre><code>ValueError: Expected more than 1 value per channel when training, got input size [1, 1024]
  </code></pre>
  
  <p>Can't find any <strong>reference</strong> in The <em>Google search</em> also..</p>