【发布时间】:2018-01-09 11:20:32
【问题描述】:
我正在尝试在 Tensorflow 中实现一个 CNN(与 VGG 非常相似的架构),然后在第一个全连接层之后分成两个分支。它遵循这篇论文:https://arxiv.org/abs/1612.01697
网络的两个分支中的每一个都输出一组 32 个数字。我想写一个联合损失函数,它需要 3 个输入:
- 分支 1 (y) 的预测
- 分支 2 (alpha) 的预测
- 标签 Y(基本事实)(q)
并计算加权损失,如下图所示:
q_hat = tf.divide(tf.reduce_sum(tf.multiply(alpha, y),0), tf.reduce_sum(alpha,0))
loss = tf.abs(tf.subtract(q_hat, q))
我明白我需要使用 tf 函数来实现这个损失函数。实现了上述功能后,网络正在训练,但一旦训练,它并没有输出预期的结果。
有没有人尝试过将网络的两个分支的输出组合到一个联合损失函数中?这是 TensorFlow 支持的吗?也许我在这里的某个地方犯了一个错误?任何帮助将不胜感激。如果您希望我添加更多详细信息,请告诉我。
【问题讨论】:
-
“没有输出预期的结果”是什么意思?
-
一旦在相同的数据集上训练并使用与论文相同的方法,我的结果就会不同。具体来说,加权分支不会学到太多,因为它输出零。我很想看到一些用 TF 编写的类似的 2 分支损失函数的例子。在昨晚调整成本函数后,我今天得到了一些更好的结果。将保持更新。
标签: function tensorflow loss