如何使用tensorflow构建一个每层都有局部损失的深度神经网络?

How to use tensorflow to build a deep neural network with the local loss for each layer?

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

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

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

所以我的问题是如何构建一个或多个图表来实现上述想法?

如有任何意见和建议,我们将不胜感激。谢谢。

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

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

每个 returns 一个元组列表(梯度,变量)。
连接每个列表

final_grads = wrt_layer1 + wrt_layer2 + .....

最后使用 .apply_gradients(grads_and_vars)

opt.apply_gradients (final_grads)

我想这可能适合你。