zoukankan      html  css  js  c++  java
  • tf常见的损失函数(LOSS)总结

    运算公式

    1、均方差函数
    均方差函数主要用于评估回归模型的使用效果,其概念相对简单,就是真实值与预测值差值的平方的均值,具体运算公式可以表达如下:

    [Q=frac{1}{m}sum_{i=1}^{m}(f(x_i)-y_i)^2 ]

    其中(f(x_i))是预测值,(y_i)是真实值
    在二维图像中,该函数代表每个散点到拟合曲线y轴距离的总和,非常直观。


    2、交叉熵函数
    出自信息论中的一个概念,原来的含义是用来估算平均编码长度的。在机器学习领域中,其常常作为分类问题的损失函数。

    [Q=-frac{1}{m}sum_{i=1}^{m}(y_ilog(f(x_i))+(1-y_i)los(1-f(x_i))) ]

    其中(f(x_i))是预测值,(y_i)是真实值
    交叉熵函数是怎么工作的呢?假设在分类问题中,被预测的物体只有是或者不是,预测值常常不是1或者0这样绝对的预测结果,预测是常用的做法是将预测结果中大于0.5的当作1,小于0.5的当作0。此时假设如果存在一个样本,预测值接近于0,实际值却是1,那么在交叉熵函数的前半部分:

    [y_ilog(f(x_i)) ]

    其运算结果会远远小于0,取符号后会远远大于0,导致该模型的损失函数巨大。通过减小交叉熵函数可以使得模型的预测精度大大提升。


    tensorflow种损失函数的表达
    1、均方差函数

    loss = tf.reduce_mean(tf.square(logits-labels))
    loss = tf.reduce_mean(tf.square(tf.sub(logits, labels)))
    loss = tf.losses.mean_squared_error(logits,labels)
    

    2、交叉熵函数

    loss = tf.nn.sigmoid_cross_entropy_with_logits(labels=y,logits=logits)
    #计算方式:对输入的logits先通过sigmoid函数计算,再计算它们的交叉熵
    #但是它对交叉熵的计算方式进行了优化,使得结果不至于溢出。
    loss = tf.nn.softmax_cross_entropy_with_logits(labels=y,logits=logits)
    #计算方式:对输入的logits先通过softmax函数计算,再计算它们的交叉熵,
    #但是它对交叉熵的计算方式进行了优化,使得结果不至于溢出。
    
  • 相关阅读:
    FFC详解及应用
    getBoundingClientRect
    userAgent
    各种排序算法的分析及java实现
    解读TCP 四种定时器
    TCP那些事儿(下)
    TCP那些事儿(上)
    10个实用的 Linux 网络和监控命令[转]
    监控 Linux 性能的 18 个命令行工具[转]
    4个强大的Linux服务器监控工具[转]
  • 原文地址:https://www.cnblogs.com/nanjibin/p/14893549.html
Copyright © 2011-2022 走看看