使用tensorflow怎么自定义损失函数

  介绍

本篇文章给大家分享的是有关使用tensorflow怎么自定义损失函数,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

import  tensorflow  as  tf   得到numpy.random  import  RandomState   batch_size =8   #,两个输入节点   x =, tf.placeholder (tf.float32,=(没有,,2),形状,name=皒-input")   #,回归问题一般只有一个输出节点   y_ =, tf.placeholder (tf.float32,=(没有,,1),形状,name=皔-input")   #,定义了一个单层的神经网络前向传播的过程,这里就是简单加权和   w1 =, tf.Variable (tf.random_normal ((2, 1), stddev=1,种子=1))   时间=y  tf.matmul (x,, w1)   #,定义预测多了和预测少了的成本   loss_less =10   loss_more =1   #在windows下、下面用这个地方替代,因为调用tf.select会报的错   loss =, tf.reduce_sum (tf.where (tf.greater (y), y_),, (y 作用;y_) * loss_more,, (y_-y) * loss_less))   时间=train_step  tf.train.AdamOptimizer (0.001) .minimize(损失)   #通过随机数生成一个模拟数据集   时间=rdm  RandomState (1)   dataset_size =128   时间=X  rdm.rand (dataset_size, 2)   “““   设置回归的正确值为两个输入的和加上一个随机量,之所以要加上一个随机量是   为了加入不可预测的噪音,否则不同损失函数的意义就不大了,因为不同损失函数   都会在能完全预测正确的时候最低。一般来说,噪音为一个均值为0的小量,所以   这里的噪音设置为-0.05,,0.05的随机数。   “““   时间=Y  [[+ x1  x2  +, rdm.rand ()/10.0 - -0.05], for  (x1, x2),拷贝X]   with  tf.Session (), as 税:=,,init  tf.global_variables_initializer ()   ,sess.run (init)   steps =, 5000   ,for 小姐:拷贝范围(步骤):   start 才能=,(小姐:*,batch_size), % dataset_size   最终获得才能=,分钟(时间+ start  batch_size,, dataset_size)   sess.run才能(train_step, feed_dict={x:[开始:结束],y_: Y[开始:结束]})   ,打印(sess.run (w1))      1.01934695 [[,]   [1.04280889],

最终结果如上面所示。

因为我们当初生成训练数据的时候,y是x1 + x2,所以回归结果应该是1,1才对。
但是,由于我们加了自己定义的损失函数,所以,倾向于预估多一点。

如果,我们将loss_less和loss_more对调,我们看一下结果:

[[0.95525807]
[0.9813394]]

使用tensorflow怎么自定义损失函数