机器学习之路: tensorflow 自定义 损失函数
git: https://github.com/linyi0604/MachineLearning/tree/master/07_tensorflow/
import tensorflow as tf
from numpy.random import RandomState '''
模拟一个回归案例
自定义一个损失函数为:
当真实值y_更大的时候 loss = a(y_ - y)
当预测值y更大的时候 loss = b(y - y_) loss_less = 10
loss_more = 1
loss = tf.reduce_sum(
tf.where(
tf.greater(y, y_),
(y - y_) * loss_more,
(y_ - y) * loss_less
)) tf.reduce_sum() 求平均数
tf.where(condition, a, b) condition为真时返回a 否则返回b
tf.grater(a, b) a>b时候返回真 否则返回假 ''' # 一批运算的数据数量
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") # 定义一个单层神经网络 前向传播的过程
# 权重变量 2*1维度 方差为1 均值为0 种子变量使得每次运行生成同样的随机数
w1 = tf.Variable(tf.random_normal([2, 1], stddev=1, seed=1)) # 计算过程
y = tf.matmul(x, w1) # 自定义损失函数部分
loss_less = 10
loss_more = 1
loss = tf.reduce_sum(
tf.where(
tf.greater(y, y_),
(y - y_) * loss_more,
(y_ - y) * loss_less
)) # 训练内容 训练速度0.001 让loss最小
train_step = tf.train.AdamOptimizer(0.001).minimize(loss) # 生成随机数作为训练数据
rdm = RandomState(1)
dataset_size = 128
X = rdm.rand(dataset_size, 2)
# 预测的正确至设置为两个特征加和 加上一个噪音
# 不设置噪音 预测的意义就不大了
# 噪音设置为均值为0的极小量
Y = [[x1 + x2 + rdm.rand()/10.0-0.05] for (x1, x2) in X] # 开启会话训练
with tf.Session() as sess:
init_op = tf.initialize_all_variables()
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.019347 ]
[1.0428089]]
'''
41 # 自定义损失函数部分
42 loss_less = 10
43 loss_more = 1
44 loss = tf.reduce_sum(
45 tf.where(
46 tf.greater(y, y_),
47 (y - y_) * loss_more,
48 (y_ - y) * loss_less
49 )) 这里自定义损失的时候,如果结果少了损失权重为10, 多了损失权重为1
预测结果 w1 为 [[1.02],[1.04]] , 所以结果预测偏向多于x1+x2, 因为多的话,损失少
机器学习之路: tensorflow 自定义 损失函数的更多相关文章
- tensorflow 自定义损失函数示例
这个自定义损失函数的背景:(一般回归用的损失函数是MSE, 但要看实际遇到的情况而有所改变) 我们现在想要做一个回归,来预估某个商品的销量,现在我们知道,一件商品的成本是1元,售价是10元. 如果我们 ...
- 吴裕雄 python 神经网络——TensorFlow 自定义损失函数
import tensorflow as tf from numpy.random import RandomState batch_size = 8 x = tf.placeholder(tf.fl ...
- Tensorflow 损失函数(loss function)及自定义损失函数(三)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/limiyudianzi/article ...
- TensorFlow笔记-06-神经网络优化-损失函数,自定义损失函数,交叉熵
TensorFlow笔记-06-神经网络优化-损失函数,自定义损失函数,交叉熵 神经元模型:用数学公式比表示为:f(Σi xi*wi + b), f为激活函数 神经网络 是以神经元为基本单位构成的 激 ...
- tensflow自定义损失函数
tensflow 不仅支持经典的损失函数,还可以优化任意的自定义损失函数. 预测商品销量时,如果预测值比真实销量大,商家损失的是生产商品的成本:如果预测值比真实值小,损失的则是商品的利润. 比如如果一 ...
- tensorflow2 自定义损失函数使用的隐藏坑
Keras的核心原则是逐步揭示复杂性,可以在保持相应的高级便利性的同时,对操作细节进行更多控制.当我们要自定义fit中的训练算法时,可以重写模型中的train_step方法,然后调用fit来训练模型. ...
- Google机器学习课程基于TensorFlow : https://developers.google.cn/machine-learning/crash-course
Google机器学习课程基于TensorFlow : https://developers.google.cn/machine-learning/crash-course https ...
- 『NiFi 学习之路』自定义 —— 组件的自定义及使用
一.概述 许多业务仅仅使用官方提供的组件不能够满足性能上的需求,往往要通过高度可定制的组件来完成特定的业务需求. 而 NiFi 提供了自定义组件的这种方式. 二.自定义 Processor 占坑待续 ...
- WPF之路——实现自定义虚拟容器(实现VirtualizingPanel)
原文:WPF之路--实现自定义虚拟容器(实现VirtualizingPanel) 源码下载地址: http://download.csdn.net/detail/qianshen88/6618033 ...
随机推荐
- C# IsAssignableFrom与IsSubClassOf 判断匿名类是否继承父类
public class Dog : Animal { public string name { get; set; } } public class Animal { public string i ...
- “榕树下·那年”移动app ( hybrid ) 开发总结
榕树下网站本身的技术人员并不多,所以app开发的任务就到了母公司盛大文学这边. 盛大文学无线业务中心负责这次具体开发任务. 一如既往的,开发的情况是:时间紧,任务重,人 ...
- 如何在阿里云Centos下安装Nginx
Nginx("engine x")是一款轻量级的HTTP和反向代理服务器.相比于Apache.lighttpd等,它具有占有内存少.并发能力强.稳定性高等优势.它最常见的用途就是提 ...
- 引发类型为“System.OutOfMemoryException”的异常
在运维工作中,经常能接到客户的反馈这个:引发类型为“System.OutOfMemoryException”的异常.客户反馈物理内存都还有富余,怎么报内存不足的错误呢! 什么时候会引发System.O ...
- 快速修改Matlab默认启动路径(Windows/Mac)
如何修改Matlab启动路径/Windows or Mac 控制台内输入一下两行命令,之后重启MATLAB即可 newpath = '你所要设定的路径'; userpath(newpath) ...
- Linux路径名和文件名最大长度限制
UNIX标准对路径名和文件名最大长度限制做出了说明,但其上限值在实际应用长过小,Linux在具体实现时提升了该上限,该限制在Linux的 /usr/include/linux/limits.h 中做出 ...
- 去除TFS版本控制
对于曾经做过TFS版本控制的项目,在版本控制服务不可用的时候,依然会在每次打开项目的时候都提示:当前项目是版本控制的项目,但是当前版本控制不可用,balabala的信息,如果是需要进行版本控制的项目在 ...
- Fiddler是最强大最好用的Web调试工具
Fiddler是最强大最好用的Web调试工具之一,它能记录所有客户端和服务器的http和https请求,允许你监视,设置断点,甚至修改输入输出数据. 使用Fiddler无论对开发还是测试来说,都有很大 ...
- 洛谷P2015二叉苹果树
传送门啦 树形 $ dp $ 入门题,学树形 $ dp $ 的话,可以考虑先做这个题. $ f[i][j] $ 表示在 $ i $ 这棵子树中选 $ j $ 个苹果的最大价值. include #in ...
- hibernate cascade
默认:none Cascade 属性值: none:在保存.删除修改对象的时候,不考虑其附属物的操作 save-update:在保存.更新当前对象时,级联保存.更新附属物. delete:在删除当前对 ...