gpt4 book ai didi

tensorflow - 使用 Tensorflow 进行多任务深度学习

转载 作者:行者123 更新时间:2023-12-03 00:37:17 24 4
gpt4 key购买 nike

有人尝试过使用 TensorFlow 进行多任务深度学习吗?也就是说,共享底层而不共享顶层。一个带有简单说明的例子会有很大帮助。

最佳答案

有一个类似的问题here ,答案使用了keras。

仅使用tensorflow时类似。这个想法是这样的:我们可以定义网络的多个输出,从而定义多个损失函数(目标)。然后,我们告诉优化器最小化组合损失函数,通常使用线性组合。

概念图Multi Task Deep Learning Diagram

这个图是根据这个paper画的.

假设我们正在训练一个分类器来预测图像中的数字,每个图像最多 5 个数字。这里我们定义了6个输出层:digit1digit2digit3digit4digit5 >,长度。如果有这样的数字,digit层应该输出0~9,如果有,则输出X(实际替换为实数) 其位置没有任何数字。 length 也是如此,如果图像包含 0~5 位数字,则应输出 0~5,如果包含超过 5 位数字,则应输出 X

现在为了训练它,我们只需将每个 softmax 函数的所有交叉熵损失相加即可:

# Define loss and optimizer
lossLength = tf.log(tf.clip_by_value(tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(length_logits, true_length)), 1e-37, 1e+37))
lossDigit1 = tf.log(tf.clip_by_value(tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(digit1_logits, true_digit1)), 1e-37, 1e+37))
lossDigit2 = tf.log(tf.clip_by_value(tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(digit2_logits, true_digit2)), 1e-37, 1e+37))
lossDigit3 = tf.log(tf.clip_by_value(tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(digit3_logits, true_digit3)), 1e-37, 1e+37))
lossDigit4 = tf.log(tf.clip_by_value(tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(digit4_logits, true_digit4)), 1e-37, 1e+37))
lossDigit5 = tf.log(tf.clip_by_value(tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(digit5_logits, true_digit5)), 1e-37, 1e+37))

cost = tf.add(
tf.add(
tf.add(
tf.add(
tf.add(cL,lossDigit1),
lossDigit2),
lossDigit3),
lossDigit4),
lossDigit5)

optimizer = tf.train.AdamOptimizer(learning_rate=learning_rate).minimize(cost)

关于tensorflow - 使用 Tensorflow 进行多任务深度学习,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34591195/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com