一种常见的需求是,加载ckpt里的图,然后在图上进行修改,那么就要用到TensorFlow的恢复模型
要在图上进行修改,难免会引进新的变量,如果使用sess.run(tf.global_variables_initializer())就会将加载进来的数据情清空,那么该怎么办呢?
可以先啥都不管把所有的图相关的部分构造好后,然后构建init_op,然后在restore前run(init_op)
import_graph() add_var_and_modify_graph() init_op = tf.group(tf.global_variables_initializer(),tf.local_variables_initializer()) sess.run(init_op) restore()
对未初始化的变量进行初始化
def get_uninitialized_variables(sess): global_vars = tf.global_variables() is_not_initialized = sess.run([tf.is_variable_initialized(var) for var in global_vars]) not_initialized_vars = [v for (v, f) in zip(global_vars, is_not_initialized) if not f] print([str(i.name) for i in not_initialized_vars]) return not_initialized_vars sess.run(tf.variables_initializer(get_uninitialized_variables(sess)))