title: tensorflow graph execution order
body: <p>consider the code:</p>
  
  <pre><code>#tensorflow graph
  input  = tf.some_place_holder
  func1  = tf.some_function .....(input)  
  func2  = tf.some_function .....(func1)  
  ....
  
  #code 1 
  res1, res2 = sess.run([ func1, func2 ],feed_dict_input)
  
  #code 2 
  res1 = sess.run([ func1 ],feed_dict_input)  
  res2 = sess.run([ func2 ],feed_dict_input)  
  </code></pre>
  
  <p>If I run code 2, will the func1 to run twice? i.e. func1 is first run to get res1 and run again get res2.  </p>
  
  <p>Is tensorflow smart enough to figure the dependency func1 and func2 so that 
  the functions are called the minium time?</p>