tensorflow 1.12使用中的问题

♀尐吖头ヾ 提交于 2020-03-17 05:12:56

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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!