0
我在多任务工作学习问题,我有3个不同的任务来解决:缺少标签
- 多标签分类问题
p1
我哪里有大小s1
,其中的标签矢量v1
每个正确的标签有一个1,否则为0。 - 多标签分类问题
p2
其中我有一个大小为s2
的标签矢量v2
,其中每个正确的标签有1,否则为0。 - 单个标签分类问题
p3
其中我有一个大小为s3
的标签矢量v3
,其中我有一个1表示正确的标签,否则为0。
我遇到的问题是,对于每个示例,我可能有一个或两个问题的标签未定义。比如我可以有:
v1 = [0,1,1,0]
v2 = [1,0,1,0,0,1]
v3 = [0,0,0]
其中v3
标签丢失。我的问题是如何阻止缺少标签的问题backprop,以便网络的权重不更新丢失的数据?
现在我的代码看起来是这样的:
target1 = tf.cast(labels['1'], tf.float32)
loss1 = tf.reduce_mean(
tf.nn.sigmoid_cross_entropy_with_logits(
labels=target1, logits=logits1))
target2 = tf.cast(labels['2'], tf.float32)
loss2 = tf.reduce_mean(
tf.nn.sigmoid_cross_entropy_with_logits(
labels=target2, logits=logits2))
target3 = tf.cast(labels['3'], tf.float32)
loss3 = tf.reduce_mean(
tf.nn.softmax_cross_entropy_with_logits(
labels=target3, logits=logits3))
loss = loss1 + loss2 + loss3
train_op = tf.train.AdamOptimizer().minimize(
loss, global_step=global_step)
我的想法是在0每个例如设置的重量缺少标签,但我真的不知道这是否是一个可行的解决方案特别是在我得到满批的情况下,只有缺少问题的标签。
我可以用缺失值填充向量为-1或其他任何东西,如果这可以帮助!
非常感谢!
如果没有标签,为什么在训练集中的输入是完全的?这种媒介没有学习。在开始之前从训练集中删除这些。 – Prune
它是一个多达德网络。这意味着我可以为两个任务分配一个标签,而不是第三个标签,因此我不想将其删除,因为它会为三个任务中的两个带来信息! –
我明白了;任务不是独立的。 – Prune