Python 如何恢复模型(图和权重)并微调一些变量?

Python 如何恢复模型(图和权重)并微调一些变量?,python,tensorflow,Python,Tensorflow,我想用tensorflow对数据集_a上的模型进行预训练,用tf.train.Saver将模型保存到检查点文件中。然后下次恢复模型,并使用数据集\B微调图中的一些变量(即并非所有可训练的\u变量) 在预培训阶段(pretrain.py),变量定义如下: with tf.variable_scope("finetune"): full_connect_W = tf.get_variable(name="full_connect_W", shape=[n_hidden, num_class]

我想用tensorflow对数据集_a上的模型进行预训练,用tf.train.Saver将模型保存到检查点文件中。然后下次恢复模型,并使用数据集\B微调图中的一些变量(即并非所有可训练的\u变量)

在预培训阶段(pretrain.py),变量定义如下:

with tf.variable_scope("finetune"):
    full_connect_W = tf.get_variable(name="full_connect_W", shape=[n_hidden, num_class], initializer=tf.random_normal_initializer())
在微调阶段(finetune.py),我必须为'svar\u列表获取变量。以下代码显示raise VALUE ERROR(升高值错误):

with tf.variable_scope("finetune") as scope:
    scope.reuse_variables()
    full_connect_w = tf.get_variable("full_connect_W:0")
ValueError:变量finetune/full_connect_W:0不存在,或者不是使用tf.get_Variable()创建的。您的意思是在VarScope中设置重用=无吗? 在这里输入代码

即使我删除了变量名中的后缀“:0”,同样的错误也会再次出现

ValueError:变量finetune/full_connect_W不存在,或者不是使用tf.get_Variable()创建的。您的意思是在VarScope中设置重用=无吗

我设法以一种丑陋的方式解决了这个问题。我还原了检查点文件,发现finetune/full\u connect\u W:0是中的第一项。我得到的变量如下:

full_connect_W = tf.trainable_variables()[0]
  • 因此,第一个问题是:有没有像获取变量通过xxx获取张量这样的方法来获取我想要微调的变量

另一个问题是,当我尝试使用finetune阶段(finetune.py)中定义的新优化器来训练模型时,出现了一些错误。似乎优化器需要初始化

full_connect_W = tf.trainable_variables()[0]
full_connect_b = tf.trainable_variables()[1]
finetune_varlist = [full_connect_W, full_connect_b]
cost = g.get_tensor_by_name("cost:0")
optimizer = tf.train.AdamOptimizer(learning_rate=learning_rate).minimize(cost, var_list=finetune_varlist)
tensorflow.python.framework.errors.FailedPremissionError:尝试使用未初始化的值beta1\u power\u 2

[[Node:beta1_power_2/read=IdentityT=DT_FLOAT,[u class=[“loc:@finetune/full_connect_W”],[u device=“/job:localhost/replica:0/task:0/gpu:0”] 由操作“beta1\u power\u 2/read”引起,定义为:

文件“finetune\lstm\u videotitle\u test.py”,第72行,在 优化器=tf.train.AdamOptimizer(学习率=学习率)。最小化(成本,变量列表=微调变量列表)

但是如果我用tf.initialize_all_variables()初始化,那么在预训练阶段训练的所有权重(变量)都将重置

  • 因此,第二个问题是:如何微调特定变量并固定其他变量