我想用tf.Softmax

时间:2018-01-08 06:42:12

标签: python tensorflow deep-learning softmax

我制作了使用$(document).ready(function() { $(document).on('click','#btnExport',function (e) { var myWindow = window.open('data:application/vnd.ms-excel,' + $('#dvData').html()); myWindow.document.title = 'mywindow'; e.preventDefault(); }); }); 预测MNIST数据的模型 但它没有用。费用打印为tf.softmax 我知道使用nan就像这样

tf.nn.softmax_cross_entropy_with_logits

我认为我的费用代码存在问题 我想知道为什么使用cost=tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=hypothesis,labels=Y))+ (0.01 * l2reg) 的方法在神经网络上不起作用 而l2reg的改编是coorect ??
谢谢〜

tf.softmax

1 个答案:

答案 0 :(得分:0)

您遇到的问题正是tf.nn.softmax_cross_entropy_with_logits使用如此重要的原因:log操作本身的数值不稳定性。

解释:这里有一个相当大的网络,最终会对某些分类非常有信心。特别是,它最终会为特定类(例如,类1)的某些图像(例如,5的图片)分配极强概率。那么logit将是非常负的,并且该高负值logit的tf.nn.softmax条目可以数字零(不完全为零,但是具有有限精度,它将被表示为零)。然后,当您自己计算log来计算交叉熵时,您将得到数值问题,从而产生nan值作为您的成本。函数tf.nn.softmax_cross_entropy_with_logits使用技巧来处理这一问题,以避免{/ 1}}和log在/溢出问题。这个技巧有时被称为 exp-normalize 技巧;请参阅this blog post(不是我写的;我只是认为这是一个明确的解释)以获取更多细节。

简而言之,请使用exp,不要尝试自己计算交叉熵。