tensorflow之损失函数】的更多相关文章

这个自定义损失函数的背景:(一般回归用的损失函数是MSE, 但要看实际遇到的情况而有所改变) 我们现在想要做一个回归,来预估某个商品的销量,现在我们知道,一件商品的成本是1元,售价是10元. 如果我们用均方差来算的话,如果预估多一个,则损失一块钱,预估少一个,则损失9元钱(少赚的). 显然,我宁愿预估多了,也不想预估少了. 所以,我们就自己定义一个损失函数,用来分段地看,当yhat 比 y大时怎么样,当yhat比y小时怎么样. (yhat沿用吴恩达课堂中的叫法)   import tensorf…
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 l…
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],…
#coding:utf-8 __author__ = 'similarface' import tensorflow as tf sess=tf.Session() #max(features, 0) print(sess.run(tf.nn.relu([-3,3,10]))) #min(max(features, 0), 6) print(sess.run(tf.nn.relu6([-3., 3., 10.]))) #1/(1+exp(-x)) print(sess.run(tf.nn.sig…
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/limiyudianzi/article/details/80697711 我主要分三篇文章给大家介绍tensorflow的损失函数,本篇为tensorflow自定义损失函数.  (一)tensorflow内置的四个损失函数  (二)其他损失函数  (三)自定义损失函数 自定义损失函数是损失函数章节的结尾,学习自定义损失函数,对于提高分类…
一.计算图中的操作 在这个例子中,我们将结合前面所学的知识,传入一个列表到计算图中的操作,并打印返回值: 声明张量和占位符.这里,创建一个numpy数组,传入计算图操作: import tensorflow as tf import numpy as np # Create graph sess = tf.Session() # Create data to feed in x_vals = np.array([1., 3., 5., 7., 9.]) x_data = tf.placehold…
tensorflow中slim模块api介绍 翻译 2017年08月29日 20:13:35   http://blog.csdn.net/guvcolie/article/details/77686555 最近需要使用slim模块,先把slim的github readme放在这里,后续会一点一点翻译 github:https://github.com/tensorflow/tensorflow/tree/master/tensorflow/contrib/slim TensorFlow-Sli…
损失函数在机器学习中用于表示预测值与真实值之间的差距.一般而言,大多数机器学习模型都会通过一定的优化器来减小损失函数从而达到优化预测机器学习模型参数的目的. 哦豁,损失函数这么必要,那都存在什么损失函数呢? 一般常用的损失函数是均方差函数和交叉熵函数. 运算公式 1 均方差函数 均方差函数主要用于评估回归模型的使用效果,其概念相对简单,就是真实值与预测值差值的平方的均值,具体运算公式可以表达如下: 其中f(xi)是预测值,yi是真实值. 其中f(x_{i})是预测值,y_{i}是真实值. 其中f…
本文学习笔记参照来源:https://tf.wiki/zh/basic/basic.html 学习笔记类似提纲,具体细节参照上文链接 一些前置的基础 随机数 tf.random uniform(shape()) 两个元素零向量 tf.zeros(shape=(2)) 2x2常量 tf.constant([1,2],[3,4]) 查看形状.类型.值 A.shape A.dtype A.numpy() 矩阵相加 tf.add(A,B) 矩阵相乘 tf.matmul(A,B) 自动求导机制  tf.G…
计算图中的操作 import numpy as np import tensorflow as tf sess = tf.Session() x_vals = np.array([1., 3., 5., 7., 9.]) x_data = tf.placeholder(dtype=tf.float32) m_const = tf.constant(3.) my_product = tf.multiply(x_data, m_const) for x_val in x_vals: print(se…
Reference: https://blog.csdn.net/marsjhao/article/details/72630147 分类问题损失函数-交叉熵(crossentropy) 交叉熵描述的是两个概率分布之间的距离,分类中广泛使用的损失函数,公式如下 在网络中可以通过Softmax回归将前向传播得到的结果变为交叉熵要求的概率分数值.Tensorflow中,Softmax回归的参数被去掉,通过一层将神经网络的输出变为一个概率分布. 代码实现 import tensorflow as tf…
Hinge损失函数主要用来评估支持向量机算法,但有时也用来评估神经网络算法.下面的示例中是计算两个目标类(-1,1)之间的损失.下面的代码中,使用目标值1,所以预测值离1越近,损失函数值越小: # Use for predicting binary (-1, 1) classes # L = max(0, 1 - (pred * actual)) hinge_y_vals = tf.maximum(., . - tf.multiply(target, x_vals)) hinge_y_out =…
TensorFlow笔记-06-神经网络优化-损失函数,自定义损失函数,交叉熵 神经元模型:用数学公式比表示为:f(Σi xi*wi + b), f为激活函数 神经网络 是以神经元为基本单位构成的 激活函数:引入非线性激活因素,提高模型的表达能力 常用的激活函数有relu.sigmoid.tanh等 (1)激活函数relu:在Tensorflow中,用tf.nn.relu()表示 (2)激活函数sigmoid:在Tensorflow中,用tf.nn.sigmoid()表示 (3)激活函数tanh…
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正则在目标附近不…
经典的损失函数----交叉熵 1 交叉熵: 分类问题中使用比较广泛的一种损失函数, 它刻画两个概率分布之间的距离 给定两个概率分布p和q, 交叉熵为: H(p, q) = -∑ p(x) log q(x) 当事件总数是一定的时候, 概率函数满足:   任意x  p(X = x) ∈[0, 1] 且 Σ p(X=x) = 1 也就是说 所有时间发生的概率都是0到1 之间 , 且总有一个时间会发生,概率的和就为1. 2 tensorflow中softmax: softmax回归可以作为学习算法来优化…
深度学习:两个重要特性:多层和非线性 线性模型:任意线性模型的组合都是线性模型,只通过线性变换任意层的全连接神经网络与单层神经网络没有区别. 激活函数:能够实现去线性化(神经元的输出通过一个非线性函数). 多层神经网络:能够解决异或问题,深度学习有组合特征提取的功能. 使用激活函数和偏置项的前向传播算法 import tensorflow as tf a = tf.nn.relu(tf.matmul(x,w1) + biases1) y = tf.nn.relu(tf.matmul(a,w2)…
''' Created on Apr 20, 2017 @author: P0079482 ''' import tensorflow as tf #获取一层神经网络边上的权重,并将这个权重的L2正则化损失加入名称为'losses'的集合中 def get_weight(shape,lambda1): #生成一个变量 var = tf.Variable(tf.random_normal(shape),dtype=tf.float32) #add_to_collection函数将这个新生成变量的L…
正如前面所讨论的,在回归中定义了损失函数或目标函数,其目的是找到使损失最小化的系数.本节将介绍如何在 TensorFlow 中定义损失函数,并根据问题选择合适的损失函数. 声明一个损失函数需要将系数定义为变量,将数据集定义为占位符.可以有一个常学习率或变化的学习率和正则化常数. 在下面的代码中,设 m 是样本数量,n 是特征数量,P 是类别数量.这里应该在代码之前定义这些全局参数: 在标准线性回归的情况下,只有一个输入变量和一个输出变量: 在多元线性回归的情况下,输入变量不止一个,而输出变量仍为…
TensorFlow损失函数 正如前面所讨论的,在回归中定义了损失函数或目标函数,其目的是找到使损失最小化的系数.本文将介绍如何在 TensorFlow 中定义损失函数,并根据问题选择合适的损失函数. 声明一个损失函数需要将系数定义为变量,将数据集定义为占位符.可以有一个常学习率或变化的学习率和正则化常数. 在下面的代码中,设 m 是样本数量,n 是特征数量,P 是类别数量.这里应该在代码之前定义这些全局参数: 在标准线性回归的情况下,只有一个输入变量和一个输出变量: 在多元线性回归的情况下,输…
前言 AI 人工智能包含了机器学习与深度学习,在前几篇文章曾经介绍过机器学习的基础知识,包括了监督学习和无监督学习,有兴趣的朋友可以阅读< Python 机器学习实战 >.而深度学习开始只是机器学习的一分支领域,它更强调从连续的层中进行学习,这种层级结构中的每一层代表不同程序的抽象,层级越高,抽象程度越大.这些层主要通过神经网络的模型学习得到的,最大的模型会有上百层之多.而最简单的神经网络分为输入层,中间层(中间层往往会包含多个隐藏层),输出层.下面几篇文章将分别从前馈神经网络 FNN.卷积神…
一.误差值 度量两个张量或者一个张量和零之间的损失误差,这个可用于在一个回归任务或者用于正则的目的(权重衰减). l2_loss tf.nn.l2_loss(t, name=None) 解释:这个函数的作用是利用 L2 范数来计算张量的误差值,但是没有开方并且只取 L2 范数的值的一半,具体如下: output = sum(t ** 2) / 2 输入参数: t: 一个Tensor.数据类型必须是一下之一:float32,float64,int64,int32,uint8,int16,int8,…
Fork版本项目地址:SSD 一.损失函数介绍 SSD损失函数分为两个部分:对应搜索框的位置loss(loc)和类别置信度loss(conf).(搜索框指网络生成的网格) 详细的说明如下: i指代搜索框序号,j指代真实框序号,p指代类别序号,p=0表示背景, 中取1表示此时第i个搜索框和第j个类别框IOU大于阈值,此时真实框中对象类别为p. cip表示第i个搜索框对应类别p的预测概率. 二.分类损失函数 有了上图的分析,我们可以看具体实现了,首先我们看Lconf部分的计算,其分为最大化第一个累加…
Softmax交叉熵损失函数(Softmax cross-entropy loss)是作用于非归一化的输出结果只针对单个目标分类的计算损失.通过softmax函数将输出结果转化成概率分布,然后计算真值概率分布的损失: # Softmax entropy loss # L = -actual * (log(softmax(pred))) - (1-actual)(log(1-softmax(pred))) unscaled_logits = tf.constant([[1., -3., 10.]]…
import numpy as np import tensorflow as tf y_pred = np.array([[1], [2], [3]],dtype=np.float32) y_real = np.array([[1], [1], [1]]) bias = np.array([1,2,3,4],dtype=np.float32) with tf.Session() as sess: sess.run(tf.global_variables_initializer()) Input…
import os import tab import tensorflow as tf from numpy.random import RandomState print "hello tensorflow 4.1" batch_size = 8 x = tf.placeholder(tf.float32,shape=(None,2),name='x-input') y_ = tf.placeholder(tf.float32,shape=(None,1),name='y-inpu…
激活函数 各激活函数曲线对比 常用激活函数: tf.sigmoid() tf.tanh() tf.nn.relu() tf.nn.softplus() tf.nn.softmax() tf.nn.dropout() tf.nn.elu() import numpy as np import matplotlib.pyplot as plt from scipy.misc import derivative def sigmoid(x): y = 1 / (1 + np.exp(-x)) retu…
1.分类问题(交叉熵): (1)模型: (2)代码1: 其中,tf.clip_by_value是将一个张量的数值限制在一个范围之内,若小于1e-10则赋值为1e-10,若大于1.0则赋值为1,这样避免出现log0这种错误或大于1的概率. reduce_mean()函数是取对一个batch的交叉熵取平均运算.reduce_mean计算之前得到的结果是一个n×m的二维矩阵[每一个样本的每一类别交叉熵],其中n为一个batch中样本数量,m为分类的类别数量.交叉熵模型中应将每行中的m个结果相加得到所有…
每次都是看了就忘,看了就忘,从今天开始,细节开始,推一遍交叉熵. 我的第一篇CSDN,献给你们(有错欢迎指出啊). 一.什么是交叉熵 交叉熵是一个信息论中的概念,它原来是用来估算平均编码长度的.给定两个概率分布p和q,通过q来表示p的交叉熵为: 注意,交叉熵刻画的是两个概率分布之间的距离,或可以说它刻画的是通过概率分布q来表达概率分布p的困难程度,p代表正确答案,q代表的是预测值,交叉熵越小,两个概率的分布约接近. 那么,在神经网络中怎样把前向传播得到的结果也变成概率分布呢?Softmax回归就…
有了数据,有了网络结构,下面我们就来写 cifar10 的代码. 首先处理输入,在 /home/your_name/TensorFlow/cifar10/ 下建立 cifar10_input.py,输入如下代码: from __future__ import absolute_import # 绝对导入 from __future__ import division # 精确除法,/是精确除,//是取整除 from __future__ import print_function # 打印函数…
前面基本上把 TensorFlow 的在图像处理上的基础知识介绍完了,下面我们就用 TensorFlow 来搭建一个分类 cifar10 的神经网络. 首先准备数据: cifar10 的数据集共有 6 万幅 32 * 32 大小的图片,分为 10 类,每类 6000 张,其中 5 万张用于训练, 1 万张用于测试.数据集被分成了5 个训练的 batches 和 1 个测试的 batch.每个 batch 里的图片都是随机排列的.官网上提供了三个版本的下载链接,分别是 Python 版本的,Mat…