当使用tensorflow搭建机器学习模型时,简单的模型可以直接从输入X开始,一层层地设置变量和operation,最终得到输出 Y ^ \hat{Y} Y^,并和label:Y一起计算出Loss Function,然后调用优化器最小化Loss即可。
然而,复杂的模型往往涉及到这样的问题,有时候,我们并不希望像上面一样,直接对模型进行端到端的更新,又或者模型涉及到多个agent,有多个优化目标,这时候,我们就不能像上面一样简单的直接对Graph内的全体参数直接进行梯度下降更新,而是需要灵活控制各部分参数。
主要依赖的函数是tf.variable_scope() 和 tf.get_collection()。
tf.variable_scope()
import tensorflow as tf
n1 = 50
input_dim = 100
output_dim = 1
X = tf.placeholder(tf.float32, [None, input_dim], 'X')
Y1 = tf.placeholder(tf.float32, [None, output_dim], 'Y1')
Y2= tf.placeholder(tf.float32, [None, output_dim], 'Y2'