restore与run(tf.global_variables_initializer())

博客围绕TensorFlow恢复模型展开,指出常见需求是加载ckpt里的图并修改,引入新变量时用sess.run(tf.global_variables_initializer())会清空加载数据。解决办法是先构造好图相关部分,构建init_op,在restore前run(init_op)对未初始化变量初始化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一种常见的需求是,加载ckpt里的图,然后在图上进行修改,那么就要用到TensorFlow的恢复模型

要在图上进行修改,难免会引进新的变量,如果使用sess.run(tf.global_variables_initializer())就会将加载进来的数据情清空,那么该怎么办呢?

  1. 可以先啥都不管把所有的图相关的部分构造好后,然后构建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()
  2. 对未初始化的变量进行初始化

    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)))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值