title: Is there a way to stop training in the middle of an epoch with tensorflow?
body: <p>Just wondering if there is a way to save the highest accuracy and lowest loss in the middle of an epoch and using that as the score moving forward for the next epoch. Normally my data is maxed out at 43.56% accuracy but I've seen it go all the way up to above 46% in the middle of an epoch. Is there a way I can stop the epoch at that point and use that for the score to beat moving forward?</p>
  
  <p>Here's the code that I'm running right now</p>
  
  <pre><code>import pandas as pd
  import numpy as np
  import pickle
  import random
  from skopt import BayesSearchCV
  from sklearn.neural_network import MLPRegressor
  from tensorflow.keras.models import Sequential
  from tensorflow.keras.layers import Dense, Dropout, LSTM, Bidirectional, SimpleRNN, GRU
  from tensorflow.keras.wrappers.scikit_learn import KerasRegressor
  from tensorflow.keras import layers
  import tensorflow_docs as tfdocs
  import tensorflow as tf
  from tensorflow.keras.callbacks import EarlyStopping, ModelCheckpoint
  import tensorflow_docs.modeling
  from tensorflow import keras
  import warnings
  warnings.filterwarnings("ignore")
  warnings.filterwarnings('ignore', category=DeprecationWarning)
  
  train_df = avenues[["LFA's", "Spend"]].sample(frac=0.8,random_state=0)
  test_df = avenues[["LFA's", "Spend"]].drop(train_df.index)
  train_df = clean_dataset(train_df)
  test_df = clean_dataset(test_df)
  train_df = train_df.reset_index(drop=True)
  test_df = test_df.reset_index(drop=True)
  train_stats = train_df.describe()
  train_stats = train_stats.pop("LFA's")
  train_stats = train_stats.transpose()
  train_labels = train_df.pop("LFA's").values
  test_labels = test_df.pop("LFA's").values
  normed_train_data = np.array(norm(train_df)).reshape((train_df.shape[0], 1, 1))
  normed_test_data = np.array(norm(test_df)).reshape((test_df.shape[0], 1, 1))
  model = KerasRegressor(build_fn=build_model, epochs=25, 
                                     batch_size=1, verbose=0)
  gs = BayesSearchCV(model, param_grid, cv=3, n_iter=25, n_jobs=1,
                                 optimizer_kwargs={'base_estimator': 'RF'},
                                 fit_params={"callbacks": [es_acc, es_loss, tfdocs.modeling.EpochDots()]})
  try:
       gs.fit(normed_train_data, train_labels)
  except Exception as e:
       print(e)
  </code></pre>