Advertisement
Guest User

Untitled

a guest
Mar 23rd, 2017
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.81 KB | None | 0 0
  1. import tensorflow as tf
  2. from tensorflow.python.ops import control_flow_ops
  3. from tensorflow.contrib import graph_editor as ge
  4.  
  5.  
  6. def make_conditional_initializer(v):
  7. """Makes initializer of variable var lazy, returns new conditional init
  8. op."""
  9.  
  10. cond = tf.is_variable_initialized(v)
  11. dummy_data = cond
  12. output_false, output_true = control_flow_ops.switch(dummy_data, cond)
  13. variable_uninited_op = tf.identity(output_false)
  14. variable_inited_op = tf.identity(output_true)
  15.  
  16. # only evaluate initial value if variable is not initialized
  17. ge.reroute.add_control_inputs(v.initial_value.op, [variable_uninited_op.op])
  18.  
  19. with tf.control_dependencies([v.initializer]):
  20. initializer_triggered = tf.ones(())
  21. initializer_triggered = tf.Print(initializer_triggered,
  22. [initializer_triggered],
  23. "triggered path")
  24.  
  25. with tf.control_dependencies([variable_inited_op]):
  26. initializer_not_triggered = tf.zeros(())
  27. initializer_not_triggered = tf.Print(initializer_not_triggered,
  28. [initializer_not_triggered],
  29. "Non-triggered path")
  30.  
  31. return control_flow_ops.merge([initializer_not_triggered,
  32. initializer_triggered])
  33.  
  34. def conditional_initializer_test():
  35. result0_ = tf.random_uniform(())
  36. result0 = tf.Print(result0_, [result0_], "initializing")
  37. var = tf.Variable(result0)
  38. conditional_init = make_conditional_initializer(var)
  39. sess = tf.Session()
  40. print("Init 1")
  41. print(sess.run(conditional_init))
  42. print("Init 2")
  43. print(sess.run(conditional_init))
  44. print("Init 3")
  45. print(sess.run(conditional_init))
  46.  
  47. if __name__=='__main__':
  48. conditional_initializer_test()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement