我正在训练张量流的im2txt样本并输出损失:
INFO:tensorflow:global step 2174: loss = 3.6930 (15.83 sec/step)
INFO:tensorflow:global step 2175: loss = 3.6651 (15.52 sec/step)
INFO:tensorflow:global step 2176: loss = 3.5733 (18.25 sec/step)
INFO:tensorflow:global step 2177: loss = 3.1979 (18.87 sec/step)
INFO:tensorflow:global step 2178: loss = 2.9362 (15.99 sec/step)
INFO:tensorflow:global step 2179: loss = 3.6375 (15.65 sec/step)
什么是损失?它如何与AI相关:正确执行的概率(是否存在公式)?什么是可接受的损失?
答案 0 :(得分:3)
来自:https://github.com/tensorflow/models/blob/master/im2txt/im2txt/show_and_tell_model.py
losses = tf.nn.sparse_softmax_cross_entropy_with_logits(labels=targets,
logits=logits)
batch_loss = tf.div(tf.reduce_sum(tf.multiply(losses, weights)),
tf.reduce_sum(weights),
name="batch_loss")
softmax
基本上是一个可导出的花式最大函数(您可以在文档中查找确切的定义)。对于最大的激活,它会有很高的价值。它可以有多次高激活,这将对所有错误的一起受到惩罚。
您希望模型优化失败。
除非您已经训练了大量具有完全相同损失的类似模型,否则这通常意味着很多。通常,您会查看损失图,以了解模型何时停止进展以便您可以停止培训。另外请记住,对于其他模型,您需要添加其他可能需要优化的损失(比如一些您希望平均为1.0的输入权重),这样可以增加损失,但不会意味着模型更糟糕。
如果您想知道您的模型是好还是坏,请为您关注的事物添加指标。显而易见的事情是精确/召回/准确性。您已经可以使用的预定义指标(streaming_accuracy)。或者,您可以计算指标并将其添加为摘要,但不会从eval数据集中获得。
另一个选择是设置一个明显不好(恒定或随机)的模型,并将该模型的损失与您获得的模型进行比较。
答案 1 :(得分:3)
损失是优化算法将尝试最小化的目标函数。
通常,您希望您的损失函数可以衡量您的模型有多糟糕。但是因为优化算法需要一些数学属性才能很好地工作,所以你不能选择通常的东西,如精度和召回(你想要的是与模型参数相关的连续函数)。
对于分类任务,softmax
是一种常见的选择。它是argmax
的流畅且表现良好的版本,用于挑选具有最高网络激活的类。通过回归,通常的mean squared error
服务很好。