title: Keras: Callbacks Requiring Validation Split?
body: <p>I'm working on a multi-class classification problem with Keras 2.1.3 and a Tensorflow backend. I have two numpy arrays, <code>x</code> and <code>y</code> and I'm using <code>tf.data.Dataset</code> like this:</p>
  
  <pre><code>dataset = tf.data.Dataset.from_tensor_slices(({"sequence": x}, y))
  dataset = dataset.apply(tf.contrib.data.batch_and_drop_remainder(self.batch_size))
  dataset = dataset.repeat()
  xt, yt = dataset.make_one_shot_iterator().get_next()
  </code></pre>
  
  <p>Then I make my Keras model (omitted for brevity), compile, and fit:</p>
  
  <pre><code>model.compile(
      loss='categorical_crossentropy',
      optimizer='adam',
      metrics=['accuracy'],
  )
  model.fit(xt, yt, steps_per_epoch=100, epochs=10)
  </code></pre>
  
  <p>This works perfectly well.  But when I add in callbacks, I run into issues.  Specifically, if I do this:</p>
  
  <pre><code>callbacks = [
      tf.keras.callbacks.ModelCheckpoint("model_{epoch:04d}_{val_acc:.4f}.h5",
                      monitor='val_acc',
                      verbose=1,
                      save_best_only=True,
                      mode='max'),
      tf.keras.callbacks.TensorBoard(os.path.join('.', 'logs')),
      tf.keras.callbacks.EarlyStopping(monitor='val_acc', patience=5, min_delta=0, mode='max')
  ]
  model.fit(xt, yt, steps_per_epoch=10, epochs=100, callbacks=callbacks)
  </code></pre>
  
  <p>I get:</p>
  
  <pre><code>KeyError: 'val_acc'
  </code></pre>
  
  <p>Also, if I include <code>validation_split=0.1</code> in my <code>model.fit(...)</code> call, I'm told:</p>
  
  <p><code>ValueError: If your data is in the form of symbolic tensors, you cannot use validation_split</code>.`</p>
  
  <p>What is the normal way to use callbacks and validation splits with <code>tf.data.Dataset</code> (tensors)?</p>
  
  <p>Thanks!</p>