zoukankan      html  css  js  c++  java
  • 损失函数(二)

    来源:中国大学MOOC 曹健 《TensorFlow笔记》

    #coding:utf-8
    #利润大于成本,希望模型尽可能往多了预测
    #0导入模块,生成数据集
    import tensorflow as tf
    import numpy as np
    BATCH_SIZE = 8
    SEED = 23455
    COST = 1
    PROFIT = 9
    
    rdm = np.random.RandomState(SEED)
    X = rdm.rand(32,2)
    Y_= [[x1+x2+(rdm.rand()/10.0-0.05)] for (x1,x2) in X]
    
    #1定义神经网络的输入、参数和输出,定义前向传播过程
    x = tf.placeholder(tf.float32, shape=(None, 2))
    y_= tf.placeholder(tf.float32, shape=(None, 1))
    w1 = tf.Variable(tf.random_normal([2,1], stddev=1, seed=1))
    y = tf.matmul(x,w1)
    
    #2定义损失函数及反向传播方法
    #定义损失函数使得预测少了的损失大,于是模型应该偏向多的方向预测
    loss_mse = tf.reduce_sum(tf.where(tf.greater(y,y_),(y-y_)*COST,(y_-y)*PROFIT))
    train_step = tf.train.GradientDescentOptimizer(0.001).minimize(loss_mse)
    
    #3生成会话,训练STEPS轮
    with tf.Session() as sess:
        init_op = tf.global_variables_initializer()
        sess.run(init_op)
        STEPS = 20000
        for i in range(STEPS):
            start = (i*BATCH_SIZE) % 32
            end = (i*BATCH_SIZE) % 32 + BATCH_SIZE
            sess.run(train_step, feed_dict={x:X[start:end], y_:Y_[start:end]})
            if i % 500 == 0:
                print "After %d training steps, w1 is:" % (i)
                print sess.run(w1)
        print "Final w1 is: 
    ",sess.run(w1)

     若成本大于利润,则会发现模型会往小的方向预测。

    将COST=9,PROFIT=1,结果如下:

  • 相关阅读:
    [C++]2-5 分数化小数
    [C++]2-4 子序列的和
    [C++]2-3 倒三角形
    [C++]2-2 韩信点兵
    [C++]2-1 水仙花数
    [C++]竞赛模板·数据统计与IO(重定向版与非重定向版)
    数学建模·经验小结
    信息检索·论文写作
    PPT制作
    演讲与语言表达
  • 原文地址:https://www.cnblogs.com/144823836yj/p/9135179.html
Copyright © 2011-2022 走看看