title: Keras: Shuffling data using model.fit() doesn't make a change but sklearn.train_test_split() does
body: <p>I'm new to Keras and facing a problem that I do not understand neither can I find any solutions in the internet so far.</p>
  <p>I use the following few lines to train a simple model on the UrbanSound8K dataset:</p>
  <pre class="lang-python prettyprint-override"><code>x_train, y_train, _, _ = load_data([&quot;data_1.pickle&quot;, &quot;data_5.pickle&quot;])
  #x_train, _, y_train, _ = train_test_split(x_train, y_train, test_size=0.01, random_state = 0, shuffle=True)
  
  model = Sequential()
  
  model.add(Dense(256, input_shape=(40,)))
  model.add(Activation('relu'))
  model.add(Dropout(0.5))
  
  model.add(Dense(256))
  model.add(Activation('relu'))
  model.add(Dropout(0.5))
  
  model.add(Dense(10))
  model.add(Activation('softmax'))
  
  model.compile(loss='categorical_crossentropy', metrics=['accuracy'], optimizer='adam')
  
  model.fit(x_train, y_train, validation_split=0.2, batch_size=32, epochs=50, shuffle=True)
  </code></pre>
  <p>When I train this model it reaches a val_accuracy of around 50%. Changing the shuffle to False in <code>model.fit()</code> doesn't seem to have any impact.
  But when I uncomment the second line and use <code>x_train, _, y_train, _ = train_test_split(x_train, y_train, test_size=0.01, random_state = 0, shuffle=True)</code> to shuffle the dataset the model reaches a val_accuracy of more then 80%! Regardless of <code>model.fit()</code> shuffle is set to True or False.</p>
  <p>How is this possible? Shuffling the data before fitting the model shouldn't make any difference since it's training data are shuffled anyway before every epoch? Or do I misunderstand the parameter shuffle of <code>model.fit()</code>? Or is there any additional magic taking place in <code>train_test_split()</code>?</p>