第一个工作深坑记录

如果你不小心搜到了这篇博客,建议关掉,因为这篇博客仅为我自己的工作记录。参考价值较低且没有经过整理。非常抱歉。

1.交叉熵函数:

参考链接:https://blog.csdn.net/john_xyz/article/details/61211422

tf.nn.softmax_cross_entropy_with_logits(_sentinel=None, labels=None, logits=None, dim=-1, name=None)

注意:这个操作的输入logits是未经缩放的,该操作内部会对logits使用softmax操作。

import tensorflow as tf

labels = [[0.2,0.3,0.5],
          [0.1,0.6,0.3]]
logits = [[2,0.5,1],
          [0.1,1,3]]
logits_scaled = tf.nn.softmax(logits)

result1 = tf.nn.softmax_cross_entropy_with_logits(labels=labels, logits=logits)
result2 = -tf.reduce_sum(labels*tf.log(logits_scaled),1)
result3 = tf.nn.softmax_cross_entropy_with_logits(labels=labels, logits=logits_scaled)

with tf.Session() as sess:
    print sess.run(result1)
    print sess.run(result2)
    print sess.run(result3)
>>>[ 1.41436887  1.66425455]
>>>[ 1.41436887  1.66425455]
>>>[ 1.17185783  1.17571414]

2.

self.accuracy = tf.reduce_mean(tf.cast(self.correct_prediction, tf.float32))
误写成
self.accuracy = tf.reduce_mean(tf.cast(self.correct_prediction, ‘tf.float32’))

3.其他博主针对于小样本数据易过拟合的调参过程:

https://blog.csdn.net/MrGiovanni/article/details/52167016


4. 关于交叉熵损失和分类准确率:

结论:交叉熵损失和分类准确率不一定是成比例的。

原因:(参考链接:https://www.zhihu.com/question/65439175/answer/231303779)

考虑一种极端情况,- 1log0.01 - 0log0.99 和 - 1log(0.49) - 0log(0.51)。同样是分错,前者的交叉熵损失远远大于后者。按照知乎er的解释,[0.01,0.99]这种情况是模型极度自信,是不好的,有可能会过拟合。那么我的理解[0.49,0.51]这种情况也未必好,可是解释为极度不自信,甚至是随机判别,有可能会欠拟合。可以通过正则化技术控制平衡这两种可能性,但是控制的程度是多少?未知(目前还没有看到methodology,慢慢调参吧)。

这个问题给我的警示:在模型训练过程中没有特殊情况尽量加正则化项。因为:在没有任何正则手段的情况下,随着训练,权值是会无限制增长, 这样造成的结果是什么呢?就是概率输出分布更加宽,更容易出现极端的概率,虽然正确分类的 loss 会降低,但是万一有一个错了,那么错误造成的 loss 是多个正确分类也拉不回来的。

猜你喜欢

转载自blog.csdn.net/xxy0118/article/details/80388556