1

我是张量流(TF)的新手。最近,当我尝试使用 TF 构建我的深度模型时,我感到很困惑,其中每一层都有自己的(局部)损失函数。

TF 实现的许多深度模型(例如 CNN)似乎只有一个(全局)损失函数,因此可以首先计算从输入层到输出层的隐藏表示;然后获得损失;最后,使用现有的优化算法和损失来训练模型。

与那些模型不同,我想使用 TF 根据其自身的局部损失来训练每一层。这意味着在训练当前层时,前一层的参数应该是固定的。

所以我的问题是如何构建一个或者,如果需要的话,几个图表来实现上述想法?

任何意见和建议将不胜感激。谢谢。

4

1 回答 1

0

您可以尝试使用优化器的.compute_gradients(loss, var_list)方法。

wrt_layer1 = opt.compute_gradients ( loss1 , < list of variables >)
wrt_layer2 = opt.compute_gradients ( loss2 , < list of variables >)
....

每个返回一个元组列表(梯度,变量)。
连接这些列表中的每一个

final_grads = wrt_layer1 + wrt_layer2 + .....

最后使用.apply_gradients(grads_and_vars)

opt.apply_gradients (final_grads)

我想这可能对你有用。

于 2018-01-21T17:18:45.043 回答