title: UnboundLocalError: local variable 'batch_index' referenced before assignment
body: <p>This is NOT MY code by here is the line, where it shows a problem:</p>
  <pre><code>model.fit(trainX, trainY, batch_size=2, epochs=200, verbose=2)
  </code></pre>
  <p>(As I am thinking now, it is very possible this code uses an older version of TF, because 'epochs' was written as 'nb_epoch').</p>
  <p>The last update of the code is from: Jan 11, 2017!</p>
  <p>I have tried everything from the internet (which is not so much), including looking inside the source code of tensorflow/keras for some hints. Just to make it clear that I don't have a variable, called 'batch_index' inside the code.</p>
  <p>So far I have looked inside different versions of TF (tensorflow/tensorflow/python/keras/engine/training_arrays.py). It appears that all are from 2018 copyright, but some start with the function fit_loop, and other with model_iteration (which is probably an update of fit_loop).</p>
  <p>So, this 'batch_index' variable can be seen only in the first function.</p>
  <p>I wonder if I am going in the right direction at all??!</p>
  <p>There is no point in showing the code, because, as I explained, there is no such variable in the first place inside the code.</p>
  <p>but, here is some code of the function 'stock_prediction', that gives the error:</p>
  <pre class="lang-py prettyprint-override"><code>
  def stock_prediction():
  
      # Collect data points from csv
      dataset = []
  
      with open(FILE_NAME) as f:
          for n, line in enumerate(f):
              if n != 0:
                  dataset.append(float(line.split(',')[1]))
  
      dataset = np.array(dataset)
  
      # Create dataset matrix (X=t and Y=t+1)
      def create_dataset(dataset):
          dataX = [dataset[n+1] for n in range(len(dataset)-2)]
          return np.array(dataX), dataset[2:]
          
      trainX, trainY = create_dataset(dataset)
  
      # Create and fit Multilinear Perceptron model
      model = Sequential()
      model.add(Dense(8, input_dim=1, activation='relu'))
      model.add(Dense(1))
      model.compile(loss='mean_squared_error', optimizer='adam')
      model.fit(trainX, trainY, nb_epoch=200, batch_size=2, verbose=2)
  
      # Our prediction for tomorrow
      prediction = model.predict(np.array([dataset[0]]))
      result = 'The price will move from %s to %s' % (dataset[0], prediction[0][0])
  
      return result
  
  </code></pre>
  <pre class="lang-py prettyprint-override"><code>
  ---------------------------------------------------------------------------
  UnboundLocalError                         Traceback (most recent call last)
  &lt;ipython-input-19-3dde95909d6e&gt; in &lt;module&gt;
       14 
       15 # We have our file so we create the neural net and get the prediction
  ---&gt; 16 print(stock_prediction())
       17 
       18 # We are done so we delete the csv file
  
  &lt;ipython-input-18-8bbf4f61c738&gt; in stock_prediction()
       23     model.add(Dense(1))
       24     model.compile(loss='mean_squared_error', optimizer='adam')
  ---&gt; 25     model.fit(trainX, trainY, batch_size=1, epochs=200, verbose=2)
       26 
       27     # Our prediction for tomorrow
  
  ~\Anaconda3\lib\site-packages\keras\engine\training.py in fit(self, x, y, batch_size, epochs, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch, steps_per_epoch, validation_steps, validation_freq, max_queue_size, workers, use_multiprocessing, **kwargs)
     1176                                         steps_per_epoch=steps_per_epoch,
     1177                                         validation_steps=validation_steps,
  -&gt; 1178                                         validation_freq=validation_freq)
     1179 
     1180     def evaluate(self,
  
  ~\Anaconda3\lib\site-packages\keras\engine\training_arrays.py in fit_loop(model, fit_function, fit_inputs, out_labels, batch_size, epochs, verbose, callbacks, val_function, val_inputs, shuffle, callback_metrics, initial_epoch, steps_per_epoch, validation_steps, validation_freq)
      211                     break
      212 
  --&gt; 213             if batch_index == len(batches) - 1:  # Last batch.
      214                 if do_validation and should_run_validation(validation_freq, epoch):
      215                     val_outs = test_loop(model, val_function, val_inputs,
  
  UnboundLocalError: local variable 'batch_index' referenced before assignment
  </code></pre>
  <p>A little clarification:</p>
  <p>I tried to see my version of tf/keras and here is it:</p>
  <pre class="lang-py prettyprint-override"><code>from tensorflow.python import keras
  print(keras.__version__)
  import keras
  print(keras.__version__)
  import tensorflow
  print(tensorflow.__version__)
  </code></pre>
  <p>2.2.4-tf</p>
  <p>2.2.5</p>
  <p>1.14.0</p>
  <p>Why keras shows different versions??</p>