zoukankan      html  css  js  c++  java
  • tensflow自定义损失函数

     tensflow 不仅支持经典的损失函数,还可以优化任意的自定义损失函数。

     预测商品销量时,如果预测值比真实销量大,商家损失的是生产商品的成本;如果预测值比真实值小,损失的则是商品的利润。

     比如如果一个商品的成本是1元,但利润是10元,那么少预测一个就少赚9元;而多预测一个才亏1元,为了最大化利润预期,需要将损失函数和利润直接联系起来。注意损失函数

    定义的是损失,所以要将利润最大化,定义的损失函数应该刻成本或者代价。下面给出了一个当预测多于真实值和预测少于真实值时有不同损失系数和损失函数:

    import  tensorflow as tf
    from numpy.random import  RandomState
    batch_size=8
    x=tf.placeholder(tf.float32,shape=(None,2),name='x-input')
    y_=tf.placeholder(tf.float32,shape=(None,1),name='y-input')
    
    w1=tf.Variable(tf.random_normal([2,1],stddev=1,seed=1))
    y=tf.matmul(x,w1)
    logss_less=10
    logss_more=1
    # 损失函数
    logss=tf.reduce_sum(tf.where(tf.greater(y,y_), (y-y_)*logss_more, (y_-y)*logss_less)) train_step=tf.train.AdamOptimizer(0.001).minimize(logss) rdm=RandomState(1) dataset_size=128 X=rdm.rand(dataset_size,2) Y=[[x1 +x2+rdm.rand()/10.0-0.05] for (x1,x2) in X] with tf.Session() as sess: init_op=tf.global_variables_initializer() sess.run(init_op) STEPS=5000 for i in range(STEPS): start=(i*batch_size) %dataset_size end=min(start+batch_size,dataset_size) sess.run(train_step, feed_dict={x:X[start:end],y_:Y[start:end]} ) print sess.run(w1)

    结果为...

    [[1.0194283]

    [1.0428752]]
    [[1.0194151]
    [1.0428821]]
    [[1.019347 ]
    [1.0428089]]

    所以预测函数的值是1.02x1+1.04x2,这要比x1+x2大,因为在损失函数中指定预测少了的损失(logss_less>loss_more.如果将log_less的值调整为1,log_more的值调整为10,

    那么结果将会如下

    ...

    [[0.95491844]
    [0.9814671 ]]
    [[0.95506585]
    [0.98148215]]
    [[0.9552581]
    [0.9813394]]

    也就是说,在这样的设置下,模型会更加偏向于预测少一点,而如果使用均方误差作为损失函数,那么w1会是[0.97437561,1.0243336],使用这个损失函数会尽量让预测值

    离标准答案更近。通过这个样例可以看出,对于相同的神经网络,不同的损失函数会对训练得到的模型产生重要影响。

  • 相关阅读:
    rpm离线安装 ZZ https://www.cnblogs.com/Dev0ps/p/11027550.html
    系统记录一下用snmp获得华为/华3 设备cpu使用率的问题
    iperf3使用介绍
    ubuntu16上安装mysql并配置
    etcdserver: mvcc: database space exceeded的处理
    zz kafka的一些细节信息
    ZZ kafka性能问题调优
    日志处理时,遇到多种re表达式轮循匹配的高性能处理方式
    zz 微信小程序image组件中aspectFill和widthfix模式应用详解
    单元格移动时高亮
  • 原文地址:https://www.cnblogs.com/canyangfeixue/p/9193493.html
Copyright © 2011-2022 走看看