title: Validation accuracy and validation loss almost remains constant in every epoch
body: <p>I am making an autonomous farming robot for my final year project. I want to move it autonomously in lanes in side the farms. I am just using the raspberry pi image in front of my vehicle. I collect my data through pi and then send it to my computer for training. 
  Initially i have just trained it for moving in a straight line. As i have not used encoders in my motors so there is a possibility of its being diverging along one direction , so i have to constantly give it the feedback to stay on the right path. 
  Sample image is as follows, Note this is black and white image :<a href="https://i.stack.imgur.com/hMzFf.png" rel="nofollow noreferrer">enter image description here</a></p>
  
  <p>I have 836 images for training and 356 for validation. When i am trying to train it, my model accuracy doesnot improves much. I have tried changing different structures, from fully connected layers to different convolutional layers, <strong>my training accuracy doesnot improves much and perhaps most of the times validation accuracy and validation loss remains same</strong>. </p>
  
  <p>I am confused that why is this so, is this to do with my code or should i apply computer vision techniques on the image so that features are more prominently visible. What should be the best approach to tackle this problem. </p>
  
  <p>My code is as follows: </p>
  
  <pre><code>import numpy
  from keras.models import Sequential
  from keras.layers import Dense
  from keras.layers import Dropout
  from keras.layers import Flatten
  from keras.layers.convolutional import Conv2D
  from keras.layers.convolutional import MaxPooling2D
  # fix dimension ordering issue
  from keras import backend as K
  import numpy as np
  import glob
  import pandas as pd
  from sklearn.model_selection import train_test_split
  K.set_image_dim_ordering('th')
  # fix random seed for reproducibility
  seed = 7
  numpy.random.seed(seed)
  
  def load_data(path):
      print("Loading training data...")
  
      training_data = glob.glob(path)[0]
  
      data=np.load(training_data)
      a=data['train']
      b=data['train_labels']
      s=np.concatenate((a, b), axis=1)
      data=pd.DataFrame(s)
      data=data.sample(frac=1)
      X = data.iloc[:,:-4]
      y=data.iloc[:,-4:]
  
  
      print("Image array shape: ", X.shape)
      print("Label array shape: ", y.shape)
  
  
  
      # normalize data
  
      # train validation split, 7:3
      return train_test_split(X, y, test_size=0.3)
  
  
  data_path = "*.npz"
  X_train,X_test,y_train,y_test=load_data(data_path)
  
  # reshape to be [samples][channels][width][height]
  X_train = X_train.values.reshape(X_train.shape[0], 1, 120, 320).astype('float32')
  X_test = X_test.values.reshape(X_test.shape[0], 1, 120, 320).astype('float32')
  # normalize inputs from 0-255 to 0-1
  X_train = X_train / 255.0
  X_test = X_test / 255.0
  # one hot encode outputs
  num_classes = y_test.shape[1]
  # define a simple CNN model
  def baseline_model():
      model = Sequential()
      model.add(Conv2D(30, (5, 5), input_shape=(1, 120, 320), activation='relu'))
      model.add(MaxPooling2D(pool_size=(2, 2)))
      model.add(Conv2D(15, (3, 3), activation='relu'))
      model.add(MaxPooling2D(pool_size=(2, 2)))
      model.add(Dropout(0.2))
      model.add(Flatten())
      model.add(Dense(128, activation='relu'))
      model.add(Dense(50, activation='relu'))
      model.add(Dense(num_classes, activation='softmax'))
      # Compile model
      model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
      return model
  # build the model
  model = baseline_model()
  # Fit the model
  model.fit(X_train, y_train, validation_data=(X_test, y_test), epochs=10, batch_size=10)
  # Final evaluation of the model
  scores = model.evaluate(X_test, y_test, verbose=0)
  print("CNN Error: %.2f%%" % (100-scores[1]*100))
  </code></pre>
  
  <p>sample output: This is the best output and it is of the above code:
  <a href="https://i.stack.imgur.com/JKOH3.png" rel="nofollow noreferrer">enter image description here</a></p>