我可以通过张量流优化损失的指定参数吗?

时间:2018-08-17 03:45:15

标签: tensorflow artificial-intelligence

我在一张图中有两个模型, 我需要交替训练这两个模型。

损失函数如下:

loss = f(theta_a) * g(theta_b) 
with tf.variable_scope(tf.get_variable_scope(), reuse=tf.AUTO_REUSE):
     A_train_op = models[model_idx_A].optimize(loss)

一次我只想优化theta_a,而又将theta_b固定下来,而另一次我想优化theta_b,而将theta_a固定下来。

我该怎么做? g(theta_b)可以转换为无法派生的某种类型吗?

1 个答案:

答案 0 :(得分:0)

优化器的minimize方法具有一个名为var_list的可选参数,该参数接受一个或多个变量以在训练期间进行优化。因此,您只能使用以下代码训练theta_a

optimizer = tf.train.GradientDescentOptimizer(learn_rate).minimize(loss, var_list=[theta_a])

另一种方法是更新当前图形的TRAINABLE_VARIABLES容器。