我制作了使用$(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
答案 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
,不要尝试自己计算交叉熵。