精华内容
下载资源
问答
  • 交叉熵损失函数和均方误差损失函数   转载:https://blog.csdn.net/dcrmg/article/details/80010342

    交叉熵损失函数和均方误差损失函数

     

    转载:https://blog.csdn.net/dcrmg/article/details/80010342

    展开全文
  • tensorflow均方误差损失函数 引用API:tensorflow.kreas.losses.MSE 均方误差(Mean Square Erroe)是回归问题最常用的损失函数,回归问题解决的是对具体数值的预测,而不是预测某个事先定义好的分类 则,...

    tensorflow均方误差损失函数

    引用API:tensorflow.kreas.losses.MSE

    MSE(y,y')=\tfrac{\sum _{i=1}^{n}(y_{i}-y_{i}')^{2}}{n}

    均方误差(Mean Square Erroe)是回归问题最常用的损失函数,回归问题解决的是对具体数值的预测,而不是预测某个事先定义好的分类

    则,lose_mean = tf.reduce_mean(tf.square(y_, y)) #y_为真实值,y_为计算出的预测值

    tensorflow均方误差损失函数预测酸奶价格

    import tensorflow as tf
    import numpy as np
    
    seed = 23456 #定义种子数值
    
    rdm = np.random.RandomState(seed) #生成[0, 1)之间的小数,由于固定seed数值,每次生成的数值都一样
    
    x = rdm.rand(32, 2) #生成32行2列的输入特征x
    
    np.set_printoptions(threshold=6) #概略显示
    
    print("32行2列的特征xs为:", x)  # 打印输入特征,概略显示5行
    
    y_ = [[x1 + x2 + (rdm.rand()  / 10.0 - 0.05)] for (x1, x2) in x] #从x中取出x1,x2相加,并且加上-0.05到+0.05随机噪声,得到标准答案y_
    
    x = tf.cast(x, dtype = tf.float32) #转换x数据类型
    
    print("转换数据类型后x:", x) #打印转换书籍类型后的x
    
    w1 = tf.Variable(tf.random.normal([2, 1], stddev = 1, seed = 1)) #初始化参数w1,生成两行一列的可训练参数
    
    print("w1为:", w1)
    
    epoch = 15000 #迭代次数为15000次
    
    lr = 0.002 #学习率为0.002
    
    for epoch in range(epoch):
        with tf.GradientTape() as tape: #用with上下文管理器调用GradientTape()方法
            y = tf.matmul(x, w1) #求前向传播计算结果y
            loss_mse = tf.reduce_mean(tf.square(y_ - y)) #求均方误差loss_mean
    # print("y为:", y)
    # print("loss_mean为:", loss_mse)
        grads = tape.gradient(loss_mse, w1) #损失函数对待训练参数w1求偏导
        w1.assign_sub(lr * grads) #更新参数w1
    
        if epoch % 500 == 0: #每迭代500轮
            print("After %d training steps, w1 is " % epoch) #每迭代500轮打印当前w1参数
            print(w1.numpy(), "\n") #打印当前w1参数
    
    print("Final w1 is :", w1.numpy()) #打印最终w1
    
    
    
    

    结果为: 

    E:\Anaconda3\envs\TF2\python.exe C:/Users/Administrator/PycharmProjects/untitled8/酸奶价格预测.py
    32行2列的特征xs为: [[0.32180029 0.32730047]
     [0.92742231 0.31169778]
     [0.16195411 0.36407808]
     ...
     [0.83554249 0.59131388]
     [0.2829476  0.05663651]
     [0.2916721  0.33175172]]
    转换数据类型后x: tf.Tensor(
    [[0.3218003  0.32730046]
     [0.9274223  0.31169778]
     [0.1619541  0.36407807]
     ...
     [0.8355425  0.5913139 ]
     [0.2829476  0.05663651]
     [0.29167208 0.33175173]], shape=(32, 2), dtype=float32)
    w1为: <tf.Variable 'Variable:0' shape=(2, 1) dtype=float32, numpy=
    array([[-0.8113182],
           [ 1.4845988]], dtype=float32)>
    After 0 training steps, w1 is 
    [[-0.8093924]
     [ 1.4857364]] 

    After 500 training steps, w1 is 
    [[-0.17545831]
     [ 1.7493846 ]] 

    After 1000 training steps, w1 is 
    [[0.12224181]
     [1.7290779 ]] 

    After 1500 training steps, w1 is 
    [[0.30012047]
     [1.639089  ]] 

    After 2000 training steps, w1 is 
    [[0.42697424]
     [1.5418574 ]] 

    After 2500 training steps, w1 is 
    [[0.5261725]
     [1.4540646]] 

    After 3000 training steps, w1 is 
    [[0.6068525]
     [1.378847 ]] 

    After 3500 training steps, w1 is 
    [[0.6734775]
     [1.3155416]] 

    After 4000 training steps, w1 is 
    [[0.72881055]
     [1.2626004 ]] 

    After 4500 training steps, w1 is 
    [[0.77486306]
     [1.2184267 ]] 

    After 5000 training steps, w1 is 
    [[0.81322  ]
     [1.1816002]] 

    After 5500 training steps, w1 is 
    [[0.8451773]
     [1.1509084]] 

    After 6000 training steps, w1 is 
    [[0.87180513]
     [1.1253314 ]] 

    After 6500 training steps, w1 is 
    [[0.8939932]
     [1.1040187]] 

    After 7000 training steps, w1 is 
    [[0.9124815]
     [1.0862588]] 

    After 7500 training steps, w1 is 
    [[0.9278873]
     [1.07146  ]] 

    After 8000 training steps, w1 is 
    [[0.94072455]
     [1.0591285 ]] 

    After 8500 training steps, w1 is 
    [[0.9514216]
     [1.0488532]] 

    After 9000 training steps, w1 is 
    [[0.96033514]
     [1.040291  ]] 

    After 9500 training steps, w1 is 
    [[0.9677624]
     [1.0331562]] 

    After 10000 training steps, w1 is 
    [[0.9739516]
     [1.0272108]] 

    After 10500 training steps, w1 is 
    [[0.97910905]
     [1.0222566 ]] 

    After 11000 training steps, w1 is 
    [[0.98340666]
     [1.0181286 ]] 

    After 11500 training steps, w1 is 
    [[0.98698765]
     [1.0146885 ]] 

    After 12000 training steps, w1 is 
    [[0.98997146]
     [1.0118226 ]] 

    After 12500 training steps, w1 is 
    [[0.9924576]
     [1.0094334]] 

    After 13000 training steps, w1 is 
    [[0.99452955]
     [1.0074434 ]] 

    After 13500 training steps, w1 is 
    [[0.9962558]
     [1.0057855]] 

    After 14000 training steps, w1 is 
    [[0.997694 ]
     [1.0044047]] 

    After 14500 training steps, w1 is 
    [[0.9988928]
     [1.0032523]] 

    Final w1 is : [[0.99988985]
     [1.0022951 ]]

    Process finished with exit code 0
     

     

    展开全文
  • 均方误差损失函数(MSE,mean squared error 回归问题解决的是对具体数值的预测,比如房价预测、销量预测等等,解决回归问题的神经网络一般只有一个输出节点,这个节点的输出值就是预测值。本文主要介绍回归问题下的...

    均方误差损失函数(MSE,mean squared error)

    回归问题解决的是对具体数值的预测,比如房价预测、销量预测等等,解决回归问题的神经网络一般只有一个输出节点,这个节点的输出值就是预测值。本文主要介绍回归问题下的损失函数——均方误差(MSE,mean squared error)。
    公式如下:
    在这里插入图片描述

    Pyorch实现的MSE

    import torch
    import numpy as np
    
    loss_fn = torch.nn.MSELoss(reduce=False, size_average=False)
    
    a=np.array([[1,2],[3,4]])
    b=np.array([[2,3],[4,5]])
    
    input = torch.autograd.Variable(torch.from_numpy(a))
    target = torch.autograd.Variable(torch.from_numpy(b))
    
    loss = loss_fn(input.float(), target.float())
    print(input.float())
    print(target.float())
    
    print(loss)
    

    在这里插入图片描述

    a=np.array([[1,2],[3,4]])
    b=np.array([[2,3],[4,6]])
    
    loss_fn = torch.nn.MSELoss(reduce=True, size_average=True)
    
    input = torch.autograd.Variable(torch.from_numpy(a))
    target = torch.autograd.Variable(torch.from_numpy(b))
    
    loss = loss_fn(input.float(), target.float())
    print(input.float())
    print(target.float())
    print(loss)
    

    在这里插入图片描述

    展开全文
  • 一、均方误差损失函数 对于回归问题,最常用的损失函数就是均方误差损失函数(MSE) 定义如下: 其中yi为输出中第i个数据的答案值,yi‘ 就是神经网络给出的预测值。因此最小化该函数就是优化的目标。 通过最小...

    一、均方误差损失函数

    对于回归问题,最常用的损失函数就是均方误差损失函数(MSE)
    定义如下:
    在这里插入图片描述
    其中yi为输出中第i个数据的答案值,yi‘ 就是神经网络给出的预测值。因此最小化该函数就是优化的目标。
    通过最小二乘法,可以获得让MSE最小的数值。令偏导分别为0,则会有一个方程组,方程组化简后,会得到一个由n,yi,xi表达的式子,这样就可以获得相应的方程组,方便计算机求解。
    最终会转化成下图的形式:
    在这里插入图片描述
    在这里插入图片描述

    二、自定义损失函数

    举例说明自定义损失函数:
    若预测某商品的出货量,每比实际的多出1个则损失2元,每比实际的少1个则损失5元。
    因此它的损失函数可以如下表达:
    在这里插入图片描述
    最小化上述的损失函数,则可以给出最佳的出货量。
    在tensorflow中可以通过
    where()和greater()函数实现上述的损失函数。

    loss  =tf.reduce_sun(tf.where(tf.greater(y,y_),(y-y_)*a,(y_-y)*b))
    #greater()输入两个张量(同维度),此函数会比较两个张量对应位置的大小,第一个大于第二个则返回True
    #where()为选择功能,第一个为选择条件。是一个bool张量,当为True时会选择第二个进行执行,否则执行第三个
    

    例程如下:

    import tensorflow as tf
    tf.compat.v1.disable_eager_execution()
    a = tf.constant([1.0,2.0,3.0,4.0,])
    b = tf.constant([6.0,5.0,4.0,3.0,])
    with tf.compat.v1.Session() as sess:
        print(tf.greater(a,b))
        print(tf.where(tf.greater(a,b),a,b))
        print(sess.run(tf.greater(a,b)))
        print(sess.run(tf.where(tf.greater(a,b),a,b)))
    
    输出结果:
    ......
    ......
    ......
    Skipping registering GPU devices...
    2020-06-30 15:56:49.766413: I tensorflow/core/platform/cpu_feature_guard.cc:143] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2
    2020-06-30 15:56:49.778833: I tensorflow/compiler/xla/service/service.cc:168] XLA service 0x22aeb00e460 initialized for platform Host (this does not guarantee that XLA will be used). Devices:
    2020-06-30 15:56:49.779383: I tensorflow/compiler/xla/service/service.cc:176]   StreamExecutor device (0): Host, Default Version
    2020-06-30 15:56:49.779798: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1102] Device interconnect StreamExecutor with strength 1 edge matrix:
    2020-06-30 15:56:49.780145: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1108]      
    Tensor("Greater:0", shape=(4,), dtype=bool)
    Tensor("SelectV2:0", shape=(4,), dtype=float32)
    [False False False  True]
    [6. 5. 4. 4.]
    
    展开全文
  • 比如对于一个4分类问题,期望输出应该为g0=[0,1,0,0],实际输出为g1=[0.2,0.4,0.4,0],计算g1与g0之间的差异所使用的方法,就是损失函数,分类问题中常用损失函数是交叉熵。 交叉熵(cross entropy)描述的是两个...
  • 参考文章:损失函数 | MSE
  • 均方误差代数函数小结

    千次阅读 2019-11-01 14:21:51
    本文将从代价函数的个人理解,均方误差代数函数作用原理以及在线性回归问题中为什么选择均方误差代数函数阐述。 1、代价函数的理解: 代价函数:真实的值与预测的值之间的偏差,由于偏差有可能正有可能负,因此使用...
  • 本来主要介绍机器学习中常见的损失函数MSE的定义以及它的求导特性。数理统计中均方误差是指参数估计值与参数值之差平方的期望值,记为MSE。MSE是衡量“平均误差”的一种较方便的方法,MSE可以评价数据的变化程度,...
  • 在做神经网络的训练学习过程中,一开始,经常是喜欢用二次代价函数来做损失函数,因为比较通俗易懂,后面在大部分的项目实践中却很少用到二次代价函数作为损失函数,而是用交叉熵作为损失函数。为什么?一直在思考这...
  • 本文重点实现tensorflow中均方误差损失函数以及交叉熵误差损失函数的代码实现,分别从基础实现、库函数进行讲解与说明。
  • 本文主要介绍回归问题的损失函数——均方误差,以及TensorFlow的实现。
  • 损失函数(loss function)可以为任意函数,常用的是均方误差和交叉熵误差 损失函数:最优参数解的参考指标,希望它越小越好 用于评价神经网络的性能“恶劣程度”,当前神经网络对监督数据(训练数据)在多大程度上...
  • 这个损失函数有很多,但是一般使用均方误差和交叉熵误差等。 1.均方误差(mean squared error) 先来看一下表达式: 用于将的求导结果变成,是神经网络的输出,是训练数据的标签值,k表示数据的维度。 用...
  • 均方误差: t是真实标签,y是网络预测值。 将其求导: 发现它的变化与激活函数的导数有关系
  • 文章目录交叉熵损失与均方误差损失损失函数角度softmax反向传播角度参考 交叉熵损失与均方误差损失 常规分类网络最后的softmax层如下图所示,传统机器学习方法以此类比, 一共有KKK类,令网络的输出为[y^1,…,y^K]...
  • python损失函数均方误差含义解释

    千次阅读 2019-06-02 23:13:12
    均方误差的公式是E=½∑(yk-tk)²,yk代表神经网络的输出,tk代表监督数据,k表示数据的维数,神经网络的输出含义是经过了某种运算得出的最终结果,监督数据指的是正确的数据用来与最终输出相比较,维数的含义则是,得出的...
  • 提到均方误差,可能最开始想到的就是求解回归问题的一种损失函数。而最早接触均方误差的时候可能在学习最小二乘法的时候。最小二乘法它通过最小化误差的平方和来寻找数据的最佳函数匹配。那么其背后的原理是什么呢?...
  • LR回归为什么需用要交叉熵损失而不用均方误差损失
  • 神经网络NN以某个指标为线索...很多函数都可以作为损失函数loss function,但常用的是均方误差和交叉熵误差等。 一、均方误差Mean Squared Error E=12∑k(yk−tk)2E=\frac12\sum_{k}(y_k-t_k)^2E=21​k∑​(yk​−t...
  • 函数形式 Sigmoid(x)=11+e−xSigmoid(x)=\frac{1}{1+e^{-x}}Sigmoid(x)=1+e−x1​ 函数图像 导数形式 Sigmoid′(x)=e−x(1+e−x)2=Sigmoid(x)(1−Sigmoid(x))Sigmoid'(x)=\frac{e^{-x}}{(1+e^{-x})^2}=Sigmoid(x)(1...
  • 交叉熵(cross entropy)是常用的方法之一,刻画了两个概率分布之间的距离,是分类问题中使用较多的一种损失函数。 给定两个概率分布p和q,通过q来表示p的交叉熵为: 如何将神经网络前向传播得到的结果也变成...
  • https://zhuanlan.zhihu.com/p/58883095
  • 损失函数公式本身来说 1. 从损失函数公式的物理含义来说 MSE衡量的是预测值和目标值的欧式距离。 而交叉熵是一个信息论的概念,交叉熵能够衡量同一个随机变量中的两个不同概率分布的差异程度,在机器学习中就...
  • 转发:https://blog.csdn.net/xiongchengluo1129/article/details/79155550
  • 经典损失函数——均方误差(MSE)

    万次阅读 2018-03-18 11:00:06
    与分类问题不同,回归问题解决的是对具体数值的预测,eg:房价预测,销量预测,流量预测等均方误差的定义:均方误差#y代表输出答案,y_代表标准答案 mse=tf.reduce_mean(tf.square(y_-y))但在实际问题中往往均方误差...
  • 可以参考这篇博文,很不错:http://blog.csdn.net/u014313009/article/details/51043064 转载于:https://www.cnblogs.com/lpworkstudyspace1992/p/7743700.html

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 14,705
精华内容 5,882
关键字:

均方误差损失函数