tensorflow进阶篇-4(损失函数1)
L2正则损失函数(即欧拉损失函数),L2正则损失函数是预测值与目标函数差值的平方和。L2正则损失函数是非常有用的损失函数,因为它在目标值附近有更好的曲度,并且离目标越近收敛越慢:
# L = (pred - actual)^2
l2_y_vals = tf.square(target - x_vals)
l2_y_out = sess.run(l2_y_vals)
L1正则损失函数(即绝对值损失函数)。与L2正则损失函数对差值求平方差不同的是,L1正则损失函数对差值求绝对值。L1正则在目标附近不平滑,这回导致算法不能很好的收敛。
# L = abs(pred - actual)
l1_y_vals = tf.abs(target - x_vals)
l1_y_out = sess.run(l1_y_vals)
Peseudo-Huber损失函数是Huber损失函数的连续、平滑估计,试图利用L1和L2正则消减极值处的陡峭,使得目标之附近连续。它的表达式依赖与参数delta。
# L = delta^2 * (sqrt(1 + ((pred - actual)/delta)^2) - 1)
delta1 = tf.constant(0.25) #delta=0.25的情况下
phuber1_y_vals = tf.multiply(tf.square(delta1), tf.sqrt(. + tf.square((target - x_vals)/delta1)) - .)
phuber1_y_out = sess.run(phuber1_y_vals)
delta2 = tf.constant(5.) #delta=5的情况下
phuber2_y_vals = tf.multiply(tf.square(delta2), tf.sqrt(1. + tf.square((target - x_vals)/delta2)) - 1.)
phuber2_y_out = sess.run(phuber2_y_vals)
利用matplotlib绘画出以上的损失函数为:
完整代码:
import matplotlib.pyplot as plt
import tensorflow as tf
from tensorflow.python.framework import ops
ops.reset_default_graph() # Create graph
sess = tf.Session() #创建与预测函数序列和目标序列作为张量
x_vals = tf.linspace(-., ., )
target = tf.constant(.) #目标值为0 #L2正则损失函数(即欧拉损失函数)
# L = (pred - actual)^2
l2_y_vals = tf.square(target - x_vals)
l2_y_out = sess.run(l2_y_vals) #L1正则损失函数(即绝对值损失函数)
# L = abs(pred - actual)
l1_y_vals = tf.abs(target - x_vals)
l1_y_out = sess.run(l1_y_vals) #Peseudo-Huber损失函数是Huber损失函数的连续 平滑估计,
#利用L1和L2正则消减极值处的陡峭,使得目标之附近连续。
# L = delta^ * (sqrt( + ((pred - actual)/delta)^) - )
delta1 = tf.constant(0.25) #delta=0.25的情况下
phuber1_y_vals = tf.multiply(tf.square(delta1), tf.sqrt(. + tf.square((target - x_vals)/delta1)) - .)
phuber1_y_out = sess.run(phuber1_y_vals) delta2 = tf.constant(.) #delta=5的情况下
phuber2_y_vals = tf.multiply(tf.square(delta2), tf.sqrt(. + tf.square((target - x_vals)/delta2)) - .)
phuber2_y_out = sess.run(phuber2_y_vals) # Plot the output:
x_array = sess.run(x_vals)
plt.plot(x_array, l2_y_out, 'b-', label='L2 Loss')
plt.plot(x_array, l1_y_out, 'r--', label='L1 Loss')
plt.plot(x_array, phuber1_y_out, 'k-.', label='P-Huber Loss (0.25)')
plt.plot(x_array, phuber2_y_out, 'g:', label='P-Huber Loss (5.0)')
plt.ylim(-0.2, 0.4)
plt.legend(loc='lower right', prop={'size': })
plt.show()
tensorflow进阶篇-4(损失函数1)的更多相关文章
- tensorflow进阶篇-4(损失函数2)
Hinge损失函数主要用来评估支持向量机算法,但有时也用来评估神经网络算法.下面的示例中是计算两个目标类(-1,1)之间的损失.下面的代码中,使用目标值1,所以预测值离1越近,损失函数值越小: # U ...
- tensorflow进阶篇-4(损失函数3)
Softmax交叉熵损失函数(Softmax cross-entropy loss)是作用于非归一化的输出结果只针对单个目标分类的计算损失.通过softmax函数将输出结果转化成概率分布,然后计算真值 ...
- tensorflow进阶篇-5(反向传播2)
上面是一个简单的回归算法,下面是一个简单的二分值分类算法.从两个正态分布(N(-1,1)和N(3,1))生成100个数.所有从正态分布N(-1,1)生成的数据目标0:从正态分布N(3,1)生成的数据标 ...
- tensorflow进阶篇-5(反向传播1)
这里将讲解tensorflow是如何通过计算图来更新变量和最小化损失函数来反向传播误差的:这步将通过声明优化函数来实现.一旦声明好优化函数,tensorflow将通过它在所有的计算图中解决反向传播的项 ...
- tensorflow进阶篇-3
#-*- coding:utf-8 -*- #Tensorflow的嵌入Layer import numpy as np import tensorflow as tf sess=tf.Session ...
- Membership三步曲之进阶篇 - 深入剖析Provider Model
Membership 三步曲之进阶篇 - 深入剖析Provider Model 本文的目标是让每一个人都知道Provider Model 是什么,并且能灵活的在自己的项目中使用它. Membershi ...
- idea 插件的使用 进阶篇
CSDN 2016博客之星评选结果公布 [系列直播]零基础学习微信小程序! "我的2016"主题征文活动 博客的神秘功能 idea 插件的使用 进阶篇(个人收集 ...
- 2. web前端开发分享-css,js进阶篇
一,css进阶篇: 等css哪些事儿看了两三遍之后,需要对看过的知识综合应用,这时候需要大量的实践经验, 简单的想法:把qq首页全屏另存为jpg然后通过ps工具切图结合css转换成html,有无从下手 ...
- windows系统快捷操作の进阶篇
上次介绍了windows系统上一些自带的常用快捷键,有些确实很方便,也满足了我们的一部分需求.但是我们追求效率的步伐怎会止步于此?这一次我将会进一步介绍windows上提升效率的方法. 一:运行 打开 ...
随机推荐
- java拷贝文件到另一个目录下
package com.util; import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream ...
- Android 6.0以上 需要运行时申请的权限
转载:http://www.cnblogs.com/tangs/articles/6377347.html 自从Android6.0发布以来,在权限上做出了很大的变动,不再是之前的只要在manifes ...
- JavaNIO学习一
文章来源:http://cucaracha.iteye.com/blog/2041847 对文件来说,可能最常用的操作就是创建.读取和写出.NIO.2 提供了丰富的方法来完成这些任务.本文从简单的小文 ...
- 自定义方法实现strcpy,strlen, strcat, strcmp函数,了解及实现原理
位置计算字符串长度 //strlen()函数,当遇到'\0'时,计算结束,'\0'不计入长度之内 //字符串的拷贝 //strcpy(字符串1,字符串2); //把字符串2 ...
- linux环境下的mysql,httpd以及与宿主机的调试问题总结
1. 首先www服务器,在宿主主机浏览器无法访问? (1)修改linux的防火墙,允许宿主主机ip访问即可. (2)关闭防火墙,即可访问. service iptables stop; 2. mysq ...
- Spark RDD详解
1.RDD是什么 RDD(Resilient Distributed Dataset):是Spark的核心数据结构,指的是一个只读的.可分区的分布式数据集,这个数据集的全部或部分可以缓存在内存中,在多 ...
- 好用的SHELL小编程
1>判断输入为数字,字符或其他 脚本代码: 检测结果: 2>求平均数: 测试效果: 3>自减输出: 脚本代码: 测试效果: 4>在文件 ...
- System.Windows.Freezable 在未被引用的程序集中定义
System.Windows.Freezable 在未被引用的程序集中定义 解决方法 添加windowsbase.dll 引用
- dstat常用参数组合
io/if/vm三合一 dstat -cdlmnpsy dstat --top-mem --top-cpu --top-io
- artdialog(4.1.7)弹出框
artDialog弹出框 <link href="/js/artDialog/skins/default.css" rel="stylesheet" /& ...