【发布时间】:2019-09-21 14:38:07
【问题描述】:
我正在研究 tensorflow(确切地说是使用 CNN 进行对象检测)
我已经研究过分类,但是对象检测是回归问题,所以我对损失函数和全网络实现感到困惑。
在分类问题中,我应该使用-
tf.nn.softmax_cross_entropy_with_logits(logits=result, labels=Y)
(结果是我的 CNN 输出张量)
但是在回归问题中,比如语义分割和对象检测,我发现我必须使用 l2-loss 函数。
tf.nn.l2_loss(t=result)
我不知道如何使用这个函数,因为我不能使用 tf.argmax 函数。
【源码1】分类,用到了softmax和tf.argmax
cross_entropy = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=result, labels=Y))
print("* Cross Entropy SIZE : " + str(cross_entropy))
Result_argmax = tf.argmax(tf.nn.softmax(result), 1)
Label_argmax = tf.argmax(Y, 1)
print("* Result Argmax : ", Result_argmax)
print("* Label Argmax : ", Label_argmax)
ay = tf.argmax(tf.nn.softmax(result), 1)
ly = tf.argmax(tf.nn.softmax(Y), 1)
correct_prediction = tf.equal(Result_argmax, Label_argmax)
print("* tf.argmax : " + str(Result_argmax))
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
train_step = tf.train.AdamOptimizer(0.0001 * batchsize).minimize(cross_entropy)
这很简单,我完全理解。
[源码2]回归,使用l2_loss函数
l2_loss = tf.reduce_mean(tf.nn.l2_loss(t=result))
print("** L2 Loss SIZE : " + str(l2_loss))
train_step = tf.train.AdamOptimizer(0.0001 * batchsize).minimize(l2_loss)
????????
正确吗?我不明白如何进行盒子位置学习。
还有,我的学习监视器被捕获了。
真的,真的我无法理解。 请帮助我!
【问题讨论】:
标签: python tensorflow neural-network object-detection loss-function