zoukankan      html  css  js  c++  java
  • TensorFlow 损失函数

    对于分类问题,我们一般用交叉熵来测算计算值与真实的差距。

    交叉熵表现的是两个概率分布之间的差距。差距越大,交叉熵越大;差距越小,交叉熵越小。

    这么说还是有点抽象。打个比方:

    一个分类问题,正确答案是(1,0,0)。

    一个预测模型经过softmax回归后给出的答案是

    (0.5,0.4,0.4)

    那么与真实值的交叉熵为:

    H((1,0,0),(0.5,0.4,0.5))=-(1*log0.5+0*log0.4+0*log0.4)~0.3

    另一个预测模型给出的答案是:

    (0.8.0.1,0.1)

    那么与真实值的交叉熵为:

    H((1,0,0),(0.8,0.1,0.1))=-(1*log0.8+0*log0.1+0*log0.1)~0.1

    我们可以直观的看出,第二个解比第一个解更接近真实值,而交叉熵也给出相应的答案。

    TensorFlow中计算交叉熵的代码为:

    cross_entropy = -tf.reduce_mean(y_*tf.log(tf.clip_by_value(y,1e-10,1.0)))

    通常,交叉熵与softmax回归一起使用,TensorFlow对这两个功能进行了统一的封装:

    cross_entropy = tf.nn.softmax_cross_etnropy_withlogits(y,y_)

    在只有一个正确答案的分类中TensorFlow提供了更加一个函数:

    cross_entropy = tf.nn.sparse_softmax_cross_entropy_with_logits(logits=y, labels=tf.argmax(y_, 1))

    对于回归问题,我们要做一个预测值,最后的结果要输出一个任意实数,整个神经网络只有一个输出点。

    这种情况,我么计算损失函数是均方差。也就是真实值与预测值的方差平均数。代码如下:

    mse = tf.reduce_mean(tf.square(y_- y))
  • 相关阅读:
    2021.5.24 团队第二阶段冲刺第一天
    2021.5.21
    2021.5.20
    2021.5.19
    2021.5.18
    软件包安装
    Selenium中的PageObject模式
    理解Python中的装饰器
    Selenium中的断言
    Selenium处理隐藏元素
  • 原文地址:https://www.cnblogs.com/guolaomao/p/8022447.html
Copyright © 2011-2022 走看看