From what I've gathered so far, there are several different ways of dumping a TensorFlow graph into a file and then loading it into another program, but I haven't been able to find clear examples/information on how they work. What I already know is this:
- Save the model's variables into a checkpoint file (.ckpt) using a 
tf.train.Saver()and restore them later (source) - Save a model into a .pb file and load it back in using 
tf.train.write_graph()andtf.import_graph_def()(source) - Load in a model from a .pb file, retrain it, and dump it into a new .pb file using Bazel (source)
 - Freeze the graph to save the graph and weights together (source)
 - Use 
as_graph_def()to save the model, and for weights/variables, map them into constants (source) 
However, I haven't been able to clear up several questions regarding these different methods:
- Regarding checkpoint files, do they only save the trained weights of a model? Could checkpoint files be loaded into a new program, and be used to run the model, or do they simply serve as ways to save the weights in a model at a certain time/stage?
 - Regarding 
tf.train.write_graph(), are the weights/variables saved as well? - Regarding Bazel, can it only save into/load from .pb files for retraining? Is there a simple Bazel command just to dump a graph into a .pb?
 - Regarding freezing, can a frozen graph be loaded in using 
tf.import_graph_def()? - The Android demo for TensorFlow loads in Google's Inception model from a .pb file. If I wanted to substitute my own .pb file, how would I go about doing that? Would I need to change any native code/methods?
 - In general, what exactly is the difference between all these methods? Or more broadly, what is the difference between 
as_graph_def()/.ckpt/.pb? 
In short, what I'm looking for is a method to save both a graph (as in, the various operations and such) and its weights/variables into a file, which can then be used to load the graph and weights into another program, for use (not necessarily continuing/retraining).
Documentation about this topic isn't very straightforward, so any answers/information would be greatly appreciated.