1. 变量如何初始化
当从已经持久化的模型文件中restore模型时,出现报错:
ValueError: Variable encoder/word_embedding already exists, disallowed. Did you mean to set reuse=True or reuse=tf.AUTO_REUSE in VarScope? Originally defined at:
要想了解这个问题的所在,先看一下tensorflow1的静态图的使用流程
报错是说变量已经存在了,是否要设置resue为True?根本的原因是重复初始化参数了。在创建一个模型对象的时候,其实是创建了一个静态图,静态图里面的变量都没有初始化。可以用global_varibles = tf.gloabal_variable_initializer()
函数来获取所有的变量。
获取到所有的变量后,如上图初始化参数的方式有两种,一种是session.run(global_varibles)
来初始化所有的参数,这个时候的参数是随机产生的,一般使用tf.random_norm_initializer()
来初始化参数。另一种方式是从已经训练好的模型中来初始化这些参数,saver.restore(session, model_save_path)
。但是这两种方式不能同时使用,如果同时使用就会报上面的变量已经存在的错。
来源:CSDN
作者:林子要加油
链接:https://blog.csdn.net/real_ilin/article/details/104834872