修改网络中的参数取值代码

代码可以参考:使用tensorflow的模型文件,修改参数名称和数值,合并两个模型等

https://blog.csdn.net/chanbo8205/article/details/88172592

我们的写法也是类似这个博客的写法。

 

  1. def main():

  2. if not os.path.exists(args.new_checkpoint_path):

  3. os.makedirs(args.new_checkpoint_path)

  4. with tf.Session() as sess:

  5. new_var_list=[] #新建一个空列表存储更新后的Variable变量

  6. for var_name, _ in tf.contrib.framework.list_variables(args.checkpoint_path): #得到checkpoint文件中所有的参数(名字,形状)元组

  7. var = tf.contrib.framework.load_variable(args.checkpoint_path, var_name) #得到上述参数的值

  8.  
  9. new_name = var_name

  10. new_name = args.add_prefix + new_name #在这里加入了名称前缀,大家可以*地作修改

  11.  
  12. #除了修改参数名称,还可以修改参数值(var)

  13.  
  14. print('Renaming %s to %s.' % (var_name, new_name))

  15. renamed_var = tf.Variable(var, name=new_name) #使用加入前缀的新名称重新构造了参数

  16. new_var_list.append(renamed_var) #把赋予新名称的参数加入空列表

  17.  
  18. print('starting to write new checkpoint !')

  19. saver = tf.train.Saver(var_list=new_var_list) #构造一个保存器

  20. sess.run(tf.global_variables_initializer()) #初始化一下参数(这一步必做)

  21. model_name = 'deeplab_resnet_altered' #构造一个保存的模型名称

  22. checkpoint_path = os.path.join(args.new_checkpoint_path, model_name) #构造一下保存路径

  23. saver.save(sess, checkpoint_path) #直接进行保存

  24. print("done !")

  25.  
  26. if __name__ == '__main__':

  27. main()

上一篇:使用Tensorflow Object Detection进行训练和推理


下一篇:spark--RDD的容错Checkpoint检查点机制-★★★★