我是TensorFlow的新手,正在尝试弄清楚TensorFlow中的自动微分功能是否能解决我的问题。我有两个网络,每个网络输出一个潜在向量。假设我的网络A输出潜在向量-La(Hxr),其中(H,r)表示输出潜在向量La的维度。同样,网络B输出Lb(Wxr)。我的目标函数将这两个潜在向量作为输入,并以(La.Lb’)的方式将它们结合,其中(.)表示点积,(‘)表示转置。我将使用交叉熵来优化这个目标函数。
现在我的问题是,TensorFlow的自动微分是否能够正确计算梯度并进行反向传播?这并不是一个简单的案例。网络A应该仅根据相对于La的梯度进行更新,而网络B应该仅根据相对于Lb计算的梯度进行更新。那么TensorFlow是否足够智能来识别这一点?是否有方法来验证这一点?
谢谢!
回答:
TensorFlow支持对您使用它定义的任何类型的计算图进行自动微分。我曾使用TensorFlow将多个网络的预测结合起来,使用不同的损失函数计算损失。因此,TensorFlow足够智能来识别这一点,它会正确计算梯度并进行反向传播。