title: Difference between Keras model.save() and model.save_weights()?
body: <p>To save a model in Keras, what are the differences between the output files of:</p>
  
  <ol>
  <li><code>model.save()</code> </li>
  <li><code>model.save_weights()</code></li>
  <li><code>ModelCheckpoint()</code> in the callback</li>
  </ol>
  
  <p>The saved file from <code>model.save()</code> is larger than the model from <code>model.save_weights()</code>, but significantly larger than a JSON or Yaml model architecture file.  Why is this?  </p>
  
  <p>Restating this: Why is size(model.save()) + size(something) = size(model.save_weights()) + size(model.to_json()), what is that "something"?</p>
  
  <p>Would it be more efficient to just <code>model.save_weights()</code> and <code>model.to_json()</code>, and load from these than to just do <code>model.save()</code> and <code>load_model()</code>?  </p>
  
  <p>What are the differences?</p>