手机网站开放,建设厅网站的投诉可以哪里查,企业营销方案,专业的徐州网站建设一、说明 
在本文中#xff0c;讨论了深度学习中使用的所有常见损失函数#xff0c;并在NumPy#xff0c;PyTorch和TensorFlow中实现了它们。 
(二-五)见 
六、稀疏分类交叉熵损失 稀疏分类交叉熵损失类似于分类交叉熵损失#xff0c;但在真实标签作为整数而不是独热编码提… 一、说明 
在本文中讨论了深度学习中使用的所有常见损失函数并在NumPyPyTorch和TensorFlow中实现了它们。 
(二-五)见 
六、稀疏分类交叉熵损失 稀疏分类交叉熵损失类似于分类交叉熵损失但在真实标签作为整数而不是独热编码提供时使用。它通常用作多类分类问题中的损失函数。 
稀疏分类交叉熵损失的公式为 
L  -1/N * sum(log(Y_hat_i)) 其中 是每个样本的真实类标签的预测概率是样本数。Y_hat_iiN 换句话说该公式计算每个样本的真实类标签的预测概率的负对数然后对所有样本的这些值求平均值。 与对真实标签使用独热编码的分类交叉熵损失不同稀疏分类交叉熵损失直接使用整数标签。每个样本的真实标签表示为 0 到 之间的单个整数值其中 是类的数量。iC-1C 
6.1 在 NumPy 中的实现 
import numpy as npdef sparse_categorical_crossentropy(y_true, y_pred):# convert true labels to one-hot encodingy_true_onehot  np.zeros_like(y_pred)y_true_onehot[np.arange(len(y_true)), y_true]  1# calculate lossloss  -np.mean(np.sum(y_true_onehot * np.log(y_pred), axis-1))return loss 在此实现中 是整数标签数组是每个样本的预测概率数组。该函数首先使用 NumPy 的高级索引功能将真实标签转换为独热编码格式以创建一个形状数组其中是样本数和类数每行对应于单个样本的真实标签分布。y_truey_pred(N, C)NC 
然后该函数使用上一个答案中描述的公式计算损失。这是使用 NumPy 的广播实现的其中创建一个形状数组其中每个元素表示 和 中相应元素的乘积。然后该函数用于对维度求和并用于对维度求平均值。-1/N * sum(log(Y_hat_i))y_true_onehot * np.log(y_pred)(N, C)y_true_onehotnp.log(y_pred)sumCmeanN 
下面是如何使用该函数的示例 
# define true labels as integers and predicted probabilities as an array
y_true  np.array([1, 2, 0])
y_pred  np.array([[0.1, 0.8, 0.1], [0.3, 0.2, 0.5], [0.4, 0.3, 0.3]])# calculate the loss
loss  sparse_categorical_crossentropy(y_true, y_pred)# print the loss
print(loss) 这将输出给定输入的稀疏分类交叉熵损失的值。 
6.2 TensorFlow 中的实现 
import tensorflow as tfdef sparse_categorical_crossentropy(y_true, y_pred):loss  tf.keras.losses.sparse_categorical_crossentropy(y_true, y_pred, from_logitsFalse)return loss# define true labels as integers and predicted probabilities as a tensor
y_true  tf.constant([1, 2, 0])
y_pred  tf.constant([[0.1, 0.8, 0.1], [0.3, 0.2, 0.5], [0.4, 0.3, 0.3]])# calculate the loss
loss  sparse_categorical_crossentropy(y_true, y_pred)# print the loss
print(loss.numpy()) 
在此实现中 是整数标签数组是每个样本的预测概率数组。该函数使用 TensorFlow 提供的函数来计算损失。设置该参数以确保 表示概率而不是对数值。y_truey_predtf.keras.losses.sparse_categorical_crossentropyfrom_logitsFalsey_pred 
6.3 在 PyTorch 中的实现 
import torch.nn.functional as F
import torchdef sparse_categorical_crossentropy(y_true, y_pred):loss  F.cross_entropy(y_pred, y_true)return loss# define true labels as integers and predicted logits as a tensor
y_true  torch.tensor([1, 2, 0])
y_pred  torch.tensor([[0.1, 0.8, 0.1], [0.3, 0.2, 0.5], [0.4, 0.3, 0.3]])# calculate the loss
loss  sparse_categorical_crossentropy(y_true, y_pred)# print the loss
print(loss.item()) 在此实现中 是一个整数标签数组并且是每个样本的预测对数数组。该函数使用 PyTorch 的函数来计算损失。张量应该具有形状其中是样本的数量是类的数量。y_truey_predF.cross_entropyy_pred(N, C)NC 
七、骰子损失 骰子损失也称为索伦森-骰子系数或 F1 分数是图像分割任务中使用的损失函数用于测量预测分割与地面实况之间的重叠。骰子损失范围从 0 到 1其中 0 表示没有重叠1 表示完全重叠。 
骰子损失定义为 
Dice Loss  1 - (2 * intersection  smooth) / (sum of squares of prediction  sum of squares of ground truth  smooth) 其中 是预测和地面真实掩码的元素乘积是一个平滑常数通常是一个较小的值例如 1e-5以防止除以零并且总和将覆盖掩码的所有元素。intersectionsmooth 骰子损失可以在各种深度学习框架中实现如TensorFlowPyTorch和NumPy。该实现涉及使用框架中可用的逐元素乘积和求和运算计算交集和平方和。 
7.1 在 NumPy 中的实现 
import numpy as npdef dice_loss(y_true, y_pred, smooth1e-5):intersection  np.sum(y_true * y_pred, axis(1,2,3))sum_of_squares_pred  np.sum(np.square(y_pred), axis(1,2,3))sum_of_squares_true  np.sum(np.square(y_true), axis(1,2,3))dice  1 - (2 * intersection  smooth) / (sum_of_squares_pred  sum_of_squares_true  smooth)return dice 在此实现中分别是基本事实和预测掩码。该参数用于防止被零除。和函数分别用于计算交集和平方和。最后使用上一个答案中描述的公式计算骰子损失。y_truey_predsmoothsumsquare 请注意此实现假定 和 是具有维度的 4D 数组。如果您的掩码具有不同的形状则可能需要相应地修改实现。y_truey_pred(batch_size, height, width, num_classes) 
7.2 TensorFlow 中的实现 
import tensorflow as tfdef dice_loss(y_true, y_pred, smooth1e-5):intersection  tf.reduce_sum(y_true * y_pred, axis(1,2,3))sum_of_squares_pred  tf.reduce_sum(tf.square(y_pred), axis(1,2,3))sum_of_squares_true  tf.reduce_sum(tf.square(y_true), axis(1,2,3))dice  1 - (2 * intersection  smooth) / (sum_of_squares_pred  sum_of_squares_true  smooth)return dice 在此实现中和 是 TensorFlow 张量分别表示地面真相和预测掩码。该参数用于防止被零除。和函数分别用于计算交集和平方和。最后使用上一个答案中描述的公式计算骰子损失。y_truey_predsmoothreduce_sumsquare 
请注意此实现假定 和 是具有维度的 4D 张量。如果您的掩码具有不同的形状则可能需要相应地修改实现。y_truey_pred(batch_size, height, width, num_classes) 
7.3 在 PyTorch 中的实现 
import torchdef dice_loss(y_true, y_pred, smooth1e-5):intersection  torch.sum(y_true * y_pred, dim(1,2,3))sum_of_squares_pred  torch.sum(torch.square(y_pred), dim(1,2,3))sum_of_squares_true  torch.sum(torch.square(y_true), dim(1,2,3))dice  1 - (2 * intersection  smooth) / (sum_of_squares_pred  sum_of_squares_true  smooth)return dice 在此实现中和 是 PyTorch 张量分别表示基本事实和预测掩码。该参数用于防止被零除。和函数分别用于计算交集和平方和。最后使用上一个答案中描述的公式计算骰子损失。y_truey_predsmoothsumsquare 
请注意此实现假定 和 是具有维度的 4D 张量。如果您的掩码具有不同的形状则可能需要相应地修改实现。y_truey_pred(batch_size, num_classes, height, width) 
八、KL散度损失 KLKullback-Leibler散度损失是两个概率分布彼此差异程度的度量。在机器学习的上下文中它通常用作损失函数来训练从给定分布生成新样本的模型。 两个概率分布 p 和 q 之间的 KL 散度定义为 KLp||q  sumpx * logpx / qx 在机器学习的上下文中p 表示真实分布q 表示预测分布。KL 散度损失衡量预测分布与真实分布的匹配程度。 KL 散度损失可用于各种任务例如图像生成、文本生成和强化学习。但是由于它具有非凸形式因此可能很难优化。 在实践中KL散度损失通常与其他损失函数如交叉熵损失结合使用。通过将KL散度损失添加到交叉熵损失中鼓励模型生成不仅与目标分布匹配而且与训练数据具有相似分布的样本。 
8.1 在 NumPy 中的实现 
import numpy as npdef kl_divergence_loss(p, q):return np.sum(p * np.log(p / q)) 
在此实现中和 是分别表示真实分布和预测分布的 numpy 数组。KL 背离损失使用上述公式计算。pq 
请注意此实现假定并具有相同的形状。如果它们具有不同的形状则可能需要相应地修改实现。pq 
8.2 TensorFlow 中的实现 tf.keras.losses.KLDivergence()是 TensorFlow 中的一个内置函数用于计算两个概率分布之间的 KL 背离损失。它可以用作各种机器学习任务中的损失函数例如图像生成、文本生成和强化学习。 下面是一个用法示例tf.keras.losses.KLDivergence() 
import tensorflow as tf# define true distribution and predicted distribution
p  tf.constant([0.2, 0.3, 0.5])
q  tf.constant([0.4, 0.3, 0.3])# compute KL divergence loss
kl_loss  tf.keras.losses.KLDivergence()(p, q)print(kl_loss.numpy()) 在此示例中和 是 TensorFlow 张量分别表示真实分布和预测分布。该函数用于计算 和 之间的 KL 散度损失。结果是一个表示损失值的标量张量。pqtf.keras.losses.KLDivergence()pq 请注意通过将 和 具有不同形状的情况广播到通用形状自动处理这些情况。此外您还可以通过设置函数的参数来调整 KL 散度损失相对于模型中其他损失的权重该参数控制损失的聚合方式。tf.keras.losses.KLDivergence()pqreduction 
8.3 在 PyTorch 中的实现 在 PyTorch 中KL 散度损失可以使用模块计算。下面是一个示例实现torch.nn.KLDivLoss 
import torchdef kl_divergence_loss(p, q):criterion  torch.nn.KLDivLoss(reductionbatchmean)loss  criterion(torch.log(p), q)return lossIn this implementation, p and q are PyTorch tensors representing the true distribution and predicted distribution, respectively. The torch.nn.KLDivLoss module is used to compute the KL divergence loss between p and q. The reduction parameter is set to batchmean to compute the mean loss over the batch. 请注意和 应该是概率沿最后一个维度的总和为 1。该函数用于在将 的对数传递给模块之前获取对数。这是因为模块期望输入是对数概率。pqtorch.logptorch.nn.KLDivLoss 
九、平均绝对误差 MAE 损耗 / L1 损耗 L1 损失也称为平均绝对误差 MAE 损失是深度学习中用于回归任务的常见损失函数。它测量目标变量的预测值和真实值之间的绝对差异。 L1损失的公式为 L1 LOSS  1/n * Σ|y_pred — y_true| 其中 n 是样本数y_pred 是预测值y_true 是真实值。 简单来说L1 损失是预测值和真实值之间绝对差值的平均值。它对异常值的敏感度低于均方误差 MSE 损失因此对于可能受异常值影响的模型来说它是一个不错的选择。 
9.1 在 Numpy 中的实现 
import numpy as npdef l1_loss(y_pred, y_true):loss  np.mean(np.abs(y_pred - y_true))return loss 
L1 损失的 NumPy 实现与公式非常相似其中您从真实值中减去预测值并取绝对值。然后取所有样本中这些绝对差异的平均值以获得平均 L1 损失。 
9.2 TensorFlow 中的实现 
import tensorflow as tfdef l1_loss(y_pred, y_true):loss  tf.reduce_mean(tf.abs(y_pred - y_true))return loss 
在 TensorFlow 中您可以使用该函数计算所有样本中预测值和真实值之间的绝对差值的平均值。tf.reduce_mean() 
9.3 在 PyTorch 中的实现 
import torchdef l1_loss(y_pred, y_true):loss  torch.mean(torch.abs(y_pred - y_true))return loss 
在 PyTorch 中您可以使用该函数计算所有样本中预测值和真实值之间的绝对差值的平均值。torch.mean() 
十、Huber 胡贝尔损失 Huber 损失是回归任务中使用的损失函数它对异常值的敏感度低于均方误差 MSE 损失。它被定义为MSE损失和平均绝对误差MAE损失的组合其中损失函数是MSE表示小误差MAE表示较大误差。这使得Huber损失比MSE损失对异常值更稳健。 Huber 损失函数定义如下 
L(y_pred, y_true)  1/n * sum(0.5 * (y_pred - y_true)^2)   if |y_pred - y_true|  delta1/n * sum(delta * |y_pred - y_true| - 0.5 * delta^2)   otherwise 其中 是样本数是预测值是真实值并且是确定在 MSE 和 MAE 损失之间切换的阈值的超参数。ny_predy_truedelta 当 损失函数是 MSE 损失。当 时损失函数是斜率为 的 MAE 损失。|y_pred - y_true|  delta|y_pred - y_true|  deltadelta 在实践中通常设置为平衡 MSE 和 MAE 损耗的值例如 。delta1.0 
10.1 在 Numpy 中的实现 
import numpy as npdef huber_loss(y_pred, y_true, delta1.0):error  y_pred - y_trueabs_error  np.abs(error)quadratic  np.minimum(abs_error, delta)linear  (abs_error - quadratic)return np.mean(0.5 * quadratic ** 2  delta * linear) 此函数将预测值、真值和超参数作为输入并返回 Huber 损失。y_predy_truedelta 该函数首先计算预测值和真值之间的绝对误差然后根据超参数将误差拆分为两个分量。二次分量是 时的 MSE 损耗线性分量是 时的 MAE 损耗。最后该函数返回所有样本的平均Huber损失。deltaabs_error  deltaabs_error  delta 您可以在基于 numpy 的回归任务中使用此函数方法是使用预测值和真实值以及所需值调用它。delta 
10.2 TensorFlow 中的实现 
import tensorflow as tfdef huber_loss(y_pred, y_true, delta1.0):error  y_pred - y_trueabs_error  tf.abs(error)quadratic  tf.minimum(abs_error, delta)linear  (abs_error - quadratic)return tf.reduce_mean(0.5 * quadratic ** 2  delta * linear) 
此函数将预测值、真值和超参数作为输入并返回 Huber 损失。y_predy_truedelta 
该函数首先使用该函数计算预测值和真值之间的绝对误差然后使用 and 运算符根据超参数将误差拆分为两个分量。二次分量是 时的 MSE 损耗线性分量是 时的 MAE 损耗。最后该函数使用该函数返回所有样本的平均Huber损失。tf.absdeltatf.minimum-abs_error  deltaabs_error  deltatf.reduce_mean 
您可以在基于 TensorFlow 的回归任务中使用此函数方法是使用预测值和真实值以及所需值调用它。delta 
10.3 在 PyTorch 中的实现 
import torch.nn.functional as Fdef huber_loss(y_pred, y_true, delta1.0):error  y_pred - y_trueabs_error  torch.abs(error)quadratic  torch.min(abs_error, delta)linear  (abs_error - quadratic)return 0.5 * quadratic ** 2  delta * linear 此函数将预测值、真值和超参数作为输入并返回 Huber 损失。y_predy_truedelta 该函数首先使用该函数计算预测值和真值之间的绝对误差然后使用 and 运算符根据超参数将误差拆分为两个分量。二次分量是 时的 MSE 损耗线性分量是 时的 MAE 损耗。最后该函数使用公式返回 Huber 损失。torch.absdeltatorch.min-abs_error  deltaabs_error  delta0.5 * quadratic ** 2  delta * linear 您可以在基于 PyTorch 的回归任务中使用此函数方法是使用预测值和真实值以及所需值调用它。delta 文章转载自: http://www.morning.wfkbk.cn.gov.cn.wfkbk.cn http://www.morning.dxhnm.cn.gov.cn.dxhnm.cn http://www.morning.yskhj.cn.gov.cn.yskhj.cn http://www.morning.wkws.cn.gov.cn.wkws.cn http://www.morning.xnltz.cn.gov.cn.xnltz.cn http://www.morning.wcrcy.cn.gov.cn.wcrcy.cn http://www.morning.fbrshjf.com.gov.cn.fbrshjf.com http://www.morning.mywnk.cn.gov.cn.mywnk.cn http://www.morning.wknjy.cn.gov.cn.wknjy.cn http://www.morning.qnwyf.cn.gov.cn.qnwyf.cn http://www.morning.thzgd.cn.gov.cn.thzgd.cn http://www.morning.mkhwx.cn.gov.cn.mkhwx.cn http://www.morning.kqfdrqb.cn.gov.cn.kqfdrqb.cn http://www.morning.wzjhl.cn.gov.cn.wzjhl.cn http://www.morning.xrrjb.cn.gov.cn.xrrjb.cn http://www.morning.xrpjr.cn.gov.cn.xrpjr.cn http://www.morning.nmngg.cn.gov.cn.nmngg.cn http://www.morning.ktmpw.cn.gov.cn.ktmpw.cn http://www.morning.fqtzn.cn.gov.cn.fqtzn.cn http://www.morning.wjlbb.cn.gov.cn.wjlbb.cn http://www.morning.bfgpn.cn.gov.cn.bfgpn.cn http://www.morning.wyjpt.cn.gov.cn.wyjpt.cn http://www.morning.yzmzp.cn.gov.cn.yzmzp.cn http://www.morning.rfzbm.cn.gov.cn.rfzbm.cn http://www.morning.nxwk.cn.gov.cn.nxwk.cn http://www.morning.qnypp.cn.gov.cn.qnypp.cn http://www.morning.hrnrx.cn.gov.cn.hrnrx.cn http://www.morning.dmnqh.cn.gov.cn.dmnqh.cn http://www.morning.fnssm.cn.gov.cn.fnssm.cn http://www.morning.trrrm.cn.gov.cn.trrrm.cn http://www.morning.hmqwn.cn.gov.cn.hmqwn.cn http://www.morning.npbnc.cn.gov.cn.npbnc.cn http://www.morning.hjwzpt.com.gov.cn.hjwzpt.com http://www.morning.mcwgn.cn.gov.cn.mcwgn.cn http://www.morning.blfgh.cn.gov.cn.blfgh.cn http://www.morning.yrblz.cn.gov.cn.yrblz.cn http://www.morning.dhmll.cn.gov.cn.dhmll.cn http://www.morning.wnwjf.cn.gov.cn.wnwjf.cn http://www.morning.fstesen.com.gov.cn.fstesen.com http://www.morning.bwmq.cn.gov.cn.bwmq.cn http://www.morning.kgqpx.cn.gov.cn.kgqpx.cn http://www.morning.jfch.cn.gov.cn.jfch.cn http://www.morning.tndxg.cn.gov.cn.tndxg.cn http://www.morning.nqlkb.cn.gov.cn.nqlkb.cn http://www.morning.jkpnm.cn.gov.cn.jkpnm.cn http://www.morning.gctgc.cn.gov.cn.gctgc.cn http://www.morning.yrddl.cn.gov.cn.yrddl.cn http://www.morning.pqndg.cn.gov.cn.pqndg.cn http://www.morning.ckrnq.cn.gov.cn.ckrnq.cn http://www.morning.tsnq.cn.gov.cn.tsnq.cn http://www.morning.ftdlg.cn.gov.cn.ftdlg.cn http://www.morning.pqjlp.cn.gov.cn.pqjlp.cn http://www.morning.qjfkz.cn.gov.cn.qjfkz.cn http://www.morning.fdxhk.cn.gov.cn.fdxhk.cn http://www.morning.mfxcg.cn.gov.cn.mfxcg.cn http://www.morning.rnnq.cn.gov.cn.rnnq.cn http://www.morning.nkwgy.cn.gov.cn.nkwgy.cn http://www.morning.pkfpl.cn.gov.cn.pkfpl.cn http://www.morning.bxnrx.cn.gov.cn.bxnrx.cn http://www.morning.lkmks.cn.gov.cn.lkmks.cn http://www.morning.lrprj.cn.gov.cn.lrprj.cn http://www.morning.wklmj.cn.gov.cn.wklmj.cn http://www.morning.kcwkt.cn.gov.cn.kcwkt.cn http://www.morning.gqfbh.cn.gov.cn.gqfbh.cn http://www.morning.yrnll.cn.gov.cn.yrnll.cn http://www.morning.lstmg.cn.gov.cn.lstmg.cn http://www.morning.ygkq.cn.gov.cn.ygkq.cn http://www.morning.lchtb.cn.gov.cn.lchtb.cn http://www.morning.tlbdy.cn.gov.cn.tlbdy.cn http://www.morning.wdshp.cn.gov.cn.wdshp.cn http://www.morning.nwrzf.cn.gov.cn.nwrzf.cn http://www.morning.jhtrb.cn.gov.cn.jhtrb.cn http://www.morning.stxg.cn.gov.cn.stxg.cn http://www.morning.pzrpz.cn.gov.cn.pzrpz.cn http://www.morning.pkpqh.cn.gov.cn.pkpqh.cn http://www.morning.qgkcs.cn.gov.cn.qgkcs.cn http://www.morning.gjsjt.cn.gov.cn.gjsjt.cn http://www.morning.nmkbl.cn.gov.cn.nmkbl.cn http://www.morning.zwhtr.cn.gov.cn.zwhtr.cn http://www.morning.fbmzm.cn.gov.cn.fbmzm.cn