title: keras.models.load_model fails with 'tags' = train
body: <p>I am exploring the c API for tensorflow 2.0. </p>
  
  <p>Problem:
  When loading model into python,weights are not restored and thus model seems to be untrained.</p>
  
  <p>Workflow:
  I am using TF 2.0 C api to handle the training of my model.
  The general setup I follow is:</p>
  
  <p><strong>1. Define model in python using TF keras api.</strong> </p>
  
  <pre class="lang-py prettyprint-override"><code>import tensorflow as tf
  from tensorflow import keras
  
  model = keras.Sequential([keras.layers.Dense(128,
                                               input_shape=(784,),
                                               activation='relu'),
                            keras.layers.Dense(10, activation='softmax')
                          ])
  model.compile(optimizer='adam',
                loss="categorical_crossentropy",
                metrics=['accuracy'])
  
  keras.experimental.export_saved_model(model,"keras_model")
  </code></pre>
  
  <p>I am using keras.experimental.export_saved_model() because I need the "signature_def['train']" which is not saved when using keras.Model.save().</p>
  
  <p><strong>2. Train model in C using TF 2.0 C api</strong>
  Saved model is then loaded into my C program via:</p>
  
  <pre class="lang-c prettyprint-override"><code>TF_LoadSessionFromSavedModel()
  </code></pre>
  
  <p>Subsequently it is trained and checkpoints are saved with:</p>
  
  <pre class="lang-c prettyprint-override"><code>TF_SessionRun()
  </code></pre>
  
  <p>Saving the model creates new checkpoints files ("checkpoint.index" and "checkpoint.data-00000-of-00001") in the "variables" folder of where my model is stored.</p>
  
  <p><strong>3. PROBLEM Reload model in python</strong>
  After training I reload my model in python. This is where I find out that the loaded model has wights corresponding to the untrained model. I know this because predictions are giberish when my trained model in C was predicting accurately.
  I load my model via:</p>
  
  <pre class="lang-py prettyprint-override"><code>import tensorflow as tf
  from tensorflow import keras
  
  model = keras.experimental.load_from_saved_model("keras_model")
  </code></pre>
  
  <p>Again, I am using keras.experimental.load_from_saved_model() because when I use keras.models.load_model() I get the following ValueError:</p>
  
  <pre class="lang-py prettyprint-override"><code>ValueError: Importing a SavedModel with tf.saved_model.load requires a 'tags=' argument if there is more than one MetaGraph. Got 'tags=None', but there are 3 MetaGraphs in the SavedModel with tag sets [['train'], ['eval'], ['serve']]. Pass a 'tags=' argument to load this SavedModel.
  </code></pre>
  
  <p>If I pass a "tags=serve" argument to keras.model.load_model() I get the following TypeError:</p>
  
  <pre class="lang-py prettyprint-override"><code>TypeError: load_model() got an unexpected keyword argument 'tags'
  </code></pre>
  
  <p>Trying to load the saved checkpoints file into my model via keras.Model.load_weights() results in an OSErro due to the file format:</p>
  
  <pre class="lang-py prettyprint-override"><code>h5py/_objects.pyx in h5py._objects.with_phil.wrapper()
  h5py/_objects.pyx in h5py._objects.with_phil.wrapper()
  h5py/h5f.pyx in h5py.h5f.open()
  OSError: Unable to open file (file signature not found)
  </code></pre>
  
  <p><strong>Questions</strong>
  What is the correct way to load a trained model via it's checkpoints file?</p>
  
  <p>How do I save a model <strong>not</strong> using keras.experimental.export_saved_model and still be able to access the signature_def['train']?</p>