tensorflow 1.12使用中的问题

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)。但是这两种方式不能同时使用,如果同时使用就会报上面的变量已经存在的错。

发布了62 篇原创文章 · 获赞 11 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/real_ilin/article/details/104834872