`
shaojiashuai123456
  • 浏览: 262671 次
  • 性别: Icon_minigender_1
  • 来自: 吉林
社区版块
存档分类
最新评论

tensorflow 损失函数

 
阅读更多

#**********************回归损失

import matplotlib.pyplot as plt

import tensorflow as tf

from tensorflow.python.framework import ops

ops.reset_default_graph()

 

sess = tf.Session()

 

# Various Predicted X-values

x_vals = tf.linspace(-1., 1., 500)

# Create our target of zero

target = tf.constant(0.)

 

# L2正则损失函数

#即欧拉损失函数。L2正则损失函数是预测值与目标值差值的平方和。L2正则损失函数是非常有用的损失函数,因为它在目标值附近有更好的曲度,机器学习算法利用这点收敛,并且离目标越近收敛越慢。

# L2 loss

# L = (pred - actual)^2

l2_y_vals = tf.square(target - x_vals)

l2_y_out = sess.run(l2_y_vals)

 

#即绝对值损失函数。与L2正则损失函数对差值求平方不同的是,L1正则损失函数对差值求绝对值。L1正则在目标值附近不平滑,这会导致算法不能很好地收敛。

# L1 loss

# L = abs(pred - actual)

l1_y_vals = tf.abs(target - x_vals)

l1_y_out = sess.run(l1_y_vals)

 

#Pseudo-Huber损失函数是Huber损失函数的连续、平滑估计,试图利用L1和L2正则削减极值处的陡峭,使得目标值附近连续。它的表达式以来参数delta。

#L = delta^2 * (sqrt(1 + ((pred - actual)/delta)^2) - 1)

 

# Pseudo-Huber with delta = 0.25

delta1 = tf.constant(0.25)

phuber1_y_vals = tf.multiply(tf.square(delta1), tf.sqrt(1. + tf.square((target - x_vals)/delta1)) - 1.)

phuber1_y_out = sess.run(phuber1_y_vals)

 

# Pseudo-Huber with delta = 5

delta2 = tf.constant(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)

 

 

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': 11})

plt.grid()

plt.show()

 

 

 

# Various predicted X values

x_vals = tf.linspace(-3., 5., 500)

 

# Target of 1.0

target = tf.constant(1.)

targets = tf.fill([500,], 1.)

 

# Hinge损失函数主要用来评估支持向量机算法,但有时也用来评估神经网络算法。

# Use for predicting binary (-1, 1) classes

# L = max(0, 1 - (pred * actual))

hinge_y_vals = tf.maximum(0., 1. - tf.multiply(target, x_vals))

hinge_y_out = sess.run(hinge_y_vals)

 

# Cross entropy loss

# L = -actual * (log(pred)) - (1-actual)(log(1-pred))

xentropy_y_vals = - tf.multiply(target, tf.log(x_vals)) - tf.multiply((1. - target), tf.log(1. - x_vals))

xentropy_y_out = sess.run(xentropy_y_vals)

 

# L = -actual * (log(sigmoid(pred))) - (1-actual)(log(1-sigmoid(pred)))

# or

# L = max(actual, 0) - actual * pred + log(1 + exp(-abs(actual)))

x_val_input = tf.expand_dims(x_vals, 1)

target_input = tf.expand_dims(targets, 1)

xentropy_sigmoid_y_vals = tf.nn.sigmoid_cross_entropy_with_logits(logits=x_val_input, labels=target_input)

xentropy_sigmoid_y_out = sess.run(xentropy_sigmoid_y_vals)

 

# Weighted cross entropy loss

# L = -actual * (log(pred)) * weights - (1-actual)(log(1-pred))

# or

# L = (1 - pred) * actual + (1 + (weights - 1) * pred) * log(1 + exp(-actual))

weight = tf.constant(0.5)

xentropy_weighted_y_vals = tf.nn.weighted_cross_entropy_with_logits(logits=x_vals, targets=targets, pos_weight=weight)

xentropy_weighted_y_out = sess.run(xentropy_weighted_y_vals)

 

 

# Plot the output

x_array = sess.run(x_vals)

plt.plot(x_array, hinge_y_out, 'b-', label='Hinge Loss')

plt.plot(x_array, xentropy_y_out, 'r--', label='Cross Entropy Loss')

plt.plot(x_array, xentropy_sigmoid_y_out, 'k-.', label='Cross Entropy Sigmoid Loss')

plt.plot(x_array, xentropy_weighted_y_out, 'g:', label='Weighted Cross Entropy Loss (x0.5)')

plt.ylim(-1.5, 3)

plt.legend(loc='lower right', prop={'size': 11})

plt.grid()

plt.show()

 

分享到:
评论

相关推荐

    TensorFlow损失函数专题详解

    在深入理解TensorFlow中的损失函数专题之前,我们首先需要明白损失函数在机器学习模型中的作用。损失函数是评价模型预测值与真实值差异的一种度量,用于衡量模型预测的准确度,它是优化算法的核心,用以计算梯度并...

    tensorflow 自定义损失函数示例代码

    ### TensorFlow自定义损失函数详解 #### 一、引言 在机器学习特别是深度学习领域,损失函数(Loss Function)扮演着至关重要的角色。它衡量了模型预测结果与真实标签之间的差距,是训练过程中优化目标的核心指标。...

    tensorflow.zip

    例如,对于分类任务,通常使用交叉熵损失函数,而回归任务则可能选择均方误差。同时,准确率(Accuracy)是衡量分类性能的常用指标。 为了训练模型,你需要定义训练步骤,这通常包括前向传播、计算损失、反向传播和...

    tensorflow 分类损失函数使用小记

    本篇小记将重点探讨在TensorFlow中如何使用分类损失函数,特别是`sparse_categorical_crossentropy`和`categorical_crossentropy`,以及它们与二分类损失函数`BinaryCrossentropy`之间的差异。 首先,我们来看多...

    那些数据和命令.zip_a_tensorflow_tensorflow 函数

    9. **损失函数(Loss Function)**:例如,均方误差(Mean Squared Error)或交叉熵(Cross Entropy)是常见的损失函数,用于衡量模型预测与真实值之间的差异。 10. **反向传播(Backpropagation)**:TensorFlow自动进行...

    TensorFlow自定义损失函数来预测商品销售量

    在TensorFlow中,自定义损失函数对于解决特定问题至关重要,特别是在优化模型性能时,如本文中预测商品销售量的例子。传统的损失函数,如均方误差(MSE)或交叉熵,可能并不适合所有情况。在这个例子中,商家的损失...

    tensorflow2.0常用损失函数小结

    这些天损失函数有点困扰我,现结合tensorflow2.0官方文档,做以下小结,如果有其它想要补充的,后面再随时更新。 1、tf.keras.losses.sparse_categorical_crossentropy / tf.keras.losses....

    交叉熵损失函数-使用 Tensorflow 库在 Python 中实现交叉熵损失函数的示例

    一个使用 Tensorflow 库在 Python 中实现交叉熵损失函数的示例,在实际中,您需要使用更高级的技巧,如对不平衡类别进行损失权重,并使用不同的参数和技术来调整模型以获得更好的性能。

    归档.zip_DNN神经网络_tensorflow_tensorflow dnn_函数拟合_用DNN拟合函数

    3. 编译模型:配置损失函数(如均方误差)和优化器(如Adam),以及评估指标。 4. 训练模型:使用训练数据对模型进行迭代训练,调整权重和偏置。 5. 验证与测试:在验证集和测试集上评估模型的性能,防止过拟合。 6....

    TensorFlow 多元函数的极值实例

    在机器学习和深度学习中,TensorFlow 是一个...在训练神经网络时,我们经常需要找到损失函数的极小值,这正是梯度下降等优化算法的目标。通过理解这些基本概念,我们可以更好地设计和调试我们的模型,以达到最优性能。

    Keras之自定义损失(loss)函数用法说明

    在Keras中可以自定义损失函数,在自定义损失函数的过程中需要注意的一点是,损失函数的参数形式,这一点在Keras中是固定的,须如下形式: def my_loss(y_true, y_pred): # y_true: True labels. TensorFlow/Theano ...

    基于数值分析和Tensorflow对Himmelblau 函数优化实战预测

    同时,使用TensorBoard等可视化工具可以帮助我们监控训练过程,观察损失函数的变化和参数更新情况。 总结来说,结合数值分析和TensorFlow解决Himmelblau函数优化问题,可以加深对神经网络反向传播原理的理解,尤其...

    Tensorflow一些常用基本概念与函数

    - **损失函数** - `tf.losses.mean_squared_error`: 均方误差 - `tf.losses.sparse_softmax_cross_entropy`: 稀疏交叉熵 - **分类函数** - `tf.nn.softmax`: Softmax函数 - **循环神经网络** - `tf.nn.rnn`: ...

    YOLOV3-损失函数及其源代码理解

    YOLOV3-损失函数及其源代码理解(yolo_layer.c) 讲得好 https://github.com/AlexeyAB/darknet/issues/821 x,y,w,h 损失 原版的bbox损失为MSE,其后又GIOU,DIOU… delta即为求完损失的梯度 公式对应图 思路及具体...

    Tensor-flow常用函数

    - `tf.nn.nce_loss`: 负例采样损失函数。 - `tf.nn.sampled_softmax_loss`: 候选采样softmax损失。 #### 保存与恢复变量 - **Checkpointing** - `tf.train.Saver`: 用于保存和恢复变量。 #### 操作组 **1. 数学...

    Tensorflow-API离线文档

    - **模型(Model)**: 可以是顺序模型或功能式模型,用于组织层和定义损失函数、优化器和评估指标。 - **层(Layer)**: 表示模型中的计算单元,如全连接层(Dense)、卷积层(Conv2D)和池化层(MaxPooling2D)。 -...

    20180531_TensorFlow函数1

    TensorFlow 是一个强大的开源库,用于构建和执行计算图,广泛应用于机器学习和深度学习...在实践中,还需要掌握更多的高级特性,如优化器、损失函数、数据预处理、模型保存与恢复等,才能构建出复杂的机器学习系统。

Global site tag (gtag.js) - Google Analytics