点击下方标题,迅速定位到你感兴趣的内容

  • 前言
  • 交叉熵损失(CrossEntropyLoss)
  • KL散度
  • 平均绝对误差(L1范数损失)
  • 均方误差损失(L2范数损失)
  • Hinge loss
  • 余弦相似度

前言

说明:讲解时会对相关文章资料进行思想、结构、优缺点,内容进行提炼和记录,相关引用会标明出处,引用之处如有侵权,烦请告知删除。
转载请注明:DengBoCong

本文打算讨论在深度学习中常用的十余种损失函数(含变种),结合PyTorch和TensorFlow2对其概念、公式及用途进行阐述,希望能达到看过的伙伴对各种损失函数有个大致的了解以及使用。本文对原理只是浅尝辄止,不进行深挖,感兴趣的伙伴可以针对每个部分深入翻阅资料。

使用版本:

  • TensorFlow2.3
  • PyTorch1.7.0

交叉熵损失(CrossEntropyLoss)

对于单事件的信息量而言,当事件发生的概率越大时,信息量越小,需要明确的是,信息量是对于单个事件来说的,实际事件存在很多种可能,所以这个时候熵就派上用场了,熵是表示随机变量不确定的度量,是对所有可能发生的事件产生的信息量的期望。交叉熵用来描述两个分布之间的差距,交叉熵越小,假设分布离真实分布越近,模型越好

在分类问题模型中(不一定是二分类),如逻辑回归、神经网络等,在这些模型的最后通常会经过一个sigmoid函数(softmax函数),输出一个概率值(一组概率值),这个概率值反映了预测为正类的可能性(一组概率值反应了所有分类的可能性)。而对于预测的概率分布和真实的概率分布之间,使用交叉熵来计算他们之间的差距,换句不严谨的话来说,交叉熵损失函数的输入,是softmax或者sigmoid函数的输出。交叉熵损失可以从理论公式推导出几个结论(优点),具体公式推导不在这里详细讲解,如下:

  • 预测的值跟目标值越远时,参数调整就越快,收敛就越快;
  • 不会陷入局部最优解

交叉熵损失函数的标准形式(也就是二分类交叉熵损失)如下:
L=1N∑iLi=1N∑i−[yi⋅log(pi)+(1−yi)⋅log(1−pi)]L = \frac{1}{N}\sum_{i}L_i=\frac{1}{N}\sum_{i}-[y_i\cdot log(p_i)+(1-y_i)\cdot log(1-p_i)]L=N1iLi=N1i[yilog(pi)+(1yi)log(1pi)]
其中,yiy_iyi 表示样本 iii 的标签,正类为1,负类为0,pip_ipi 表示样本 iii 预测为正的概率。
多分类交叉熵损失如下:
L=1N∑iLi=1N∑i−∑c=1Myiclog(pic)L=\frac{1}{N}\sum_{i}L_i=\frac{1}{N}\sum_{i}-\sum_{c=1}^{M}y_{ic}log(p_{ic})L=N1iLi=N1ic=1Myiclog(pic)
其中,MMM 表示类别的数量,yicy_{ic}yic 表示变量(0或1),如果该类别和样本i的类别相同就是1,否则是0,picp_{ic}pic 表示对于观测样本 iii 属于类别 ccc 的预测概率。

TensorFlow:

  • BinaryCrossentropy:二分类,经常搭配Sigmoid使用
tf.keras.losses.BinaryCrossentropy(from_logits=False, label_smoothing=0, reduction=losses_utils.ReductionV2.AUTO, name='binary_crossentropy')
参数:from_logits:默认False。为True,表示接收到了原始的logits,为False表示输出层经过了概率处理(softmax)label_smoothing:[0,1]之间浮点值,加入噪声,减少了真实样本标签的类别在计算损失函数时的权重,最终起到抑制过拟合的效果。reduction:传入tf.keras.losses.Reduction类型值,默认AUTO,定义对损失的计算方式。
  • binary_crossentropy
tf.keras.losses.binary_crossentropy(y_true, y_pred, from_logits=False, label_smoothing=0)
参数:from_logits:默认False。为True,表示接收到了原始的logits,为False表示输出层经过了概率处理(softmax)label_smoothing:[0,1]之间浮点值,加入噪声,减少了真实样本标签的类别在计算损失函数时的权重,最终起到抑制过拟合的效果。
  • CategoricalCrossentropy:多分类,经常搭配Softmax使用
tf.keras.losses.CategoricalCrossentropy(from_logits=False, label_smoothing=0, reduction=losses_utils.ReductionV2.AUTO, name='categorical_crossentropy')
参数:from_logits:默认False。为True,表示接收到了原始的logits,为False表示输出层经过了概率处理(softmax)label_smoothing:[0,1]之间浮点值,加入噪声,减少了真实样本标签的类别在计算损失函数时的权重,最终起到抑制过拟合的效果。reduction:传入tf.keras.losses.Reduction类型值,默认AUTO,定义对损失的计算方式。
  • categorical_crossentropy
tf.keras.losses.categorical_crossentropy(y_true, y_pred, from_logits=False, label_smoothing=0)
参数:from_logits:默认False。为True,表示接收到了原始的logits,为False表示输出层经过了概率处理(softmax)label_smoothing:[0,1]之间浮点值,加入噪声,减少了真实样本标签的类别在计算损失函数时的权重,最终起到抑制过拟合的效果。
  • SparseCategoricalCrossentropy:多分类,经常搭配Softmax使用,和CategoricalCrossentropy不同之处在于,CategoricalCrossentropy是one-hot编码,而SparseCategoricalCrossentropy使用一个位置整数表示类别
tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False, reduction=losses_utils.ReductionV2.AUTO, name='sparse_categorical_crossentropy')
参数:from_logits:默认False。为True,表示接收到了原始的logits,为False表示输出层经过了概率处理(softmax)reduction:传入tf.keras.losses.Reduction类型值,默认AUTO,定义对损失的计算方式。
  • sparse_categorical_crossentropy
tf.keras.losses.sparse_categorical_crossentropy(y_true, y_pred, from_logits=False, axis=-1)
参数:from_logits:默认False。为True,表示接收到了原始的logits,为False表示输出层经过了概率处理(softmax)axis:默认是-1,计算交叉熵的维度

PyTorch:

  • BCELoss
torch.nn.BCELoss(weight: Optional[torch.Tensor] = None, size_average=None, reduce=None, reduction: str = 'mean')
参数:weight:每个分类的缩放权重,传入的大小必须和类别数量一至size_average:bool类型,为True时,返回的loss为平均值,为False时,返回的各样本的loss之和reduce:bool类型,返回值是否为标量,默认为Truereduction:string类型,'none' | 'mean' | 'sum'三种参数值
  • BCEWithLogitsLoss:其实和TensorFlow是的from_logits参数很像,在BCELoss的基础上合并了Sigmoid
torch.nn.BCEWithLogitsLoss(weight: Optional[torch.Tensor] = None, size_average=None, reduce=None, reduction: str = 'mean', pos_weight: Optional[torch.Tensor] = None)
参数:weight:每个分类的缩放权重,传入的大小必须和类别数量一至size_average:bool类型,为True时,返回的loss为平均值,为False时,返回的各样本的loss之和reduce:bool类型,返回值是否为标量,默认为Truereduction:string类型,'none' | 'mean' | 'sum'三种参数值pos_weight:正样本的权重, 当p>1,提高召回率,当p<1,提高精确度。可达到权衡召回率(Recall)和精确度(Precision)的作用。
  • CrossEntropyLoss
torch.nn.CrossEntropyLoss(weight: Optional[torch.Tensor] = None, size_average=None, ignore_index: int = -100, reduce=None, reduction: str = 'mean')
参数:weight:每个分类的缩放权重,传入的大小必须和类别数量一至size_average:bool类型,为True时,返回的loss为平均值,为False时,返回的各样本的loss之和ignore_index:忽略某一类别,不计算其loss,其loss会为0,并且,在采用size_average时,不会计算那一类的loss,除的时候的分母也不会统计那一类的样本reduce:bool类型,返回值是否为标量,默认为Truereduction:string类型,'none' | 'mean' | 'sum'三种参数值

KL散度

我们在计算预测和真实标签之间损失时,需要拉近他们分布之间的差距,即模型得到的预测分布应该与数据的实际分布情况尽可能相近。KL散度(相对熵)是用来衡量两个概率分布之间的差异。模型需要得到最大似然估计,乘以负Log以后就相当于求最小值,此时等价于求最小化KL散度(相对熵)。所以得到KL散度就得到了最大似然。又因为KL散度中包含两个部分,第一部分是交叉熵,第二部分是信息熵,即KL=交叉熵−信息熵。信息熵是消除不确定性所需信息量的度量,简单来说就是真实的概率分布,而这部分是固定的,所以优化KL散度就是近似于优化交叉熵。下面是KL散度的公式:
DKL(p∣∣q)=∑i=1Np(xi)⋅(logp(xi)−logq(xi))D_{KL}(p||q)=\sum_{i=1}^Np(x_i)\cdot (logp(x_i)-logq(x_i))DKL(pq)=i=1Np(xi)(logp(xi)logq(xi))
联系上面的交叉熵,我们可以将公式简化为(KL散度 = 交叉熵 - 熵):
DKL(A∣∣B)=H(A,B)−S(A)D_{KL}(A||B)=H(A,B)-S(A)DKL(AB)=H(A,B)S(A)
监督学习中,因为训练集中每个样本的标签是已知的,此时标签和预测的标签之间的KL散度等价于交叉熵。
TensorFlow:

  • KLD | kullback_leibler_divergence
tf.keras.losses.KLD(y_true, y_pred)
  • KLDivergence
tf.keras.losses.KLDivergence(reduction=losses_utils.ReductionV2.AUTO, name='kl_divergence')
参数:reduction:传入tf.keras.losses.Reduction类型值,默认AUTO,定义对损失的计算方式。

Pytorch:

  • KLDivLoss
torch.nn.KLDivLoss(size_average=None, reduce=None, reduction: str = 'mean', log_target: bool = False)
参数:size_average:bool类型,为True时,返回的loss为平均值,为False时,返回的各样本的loss之和reduce:bool类型,返回值是否为标量,默认为Truereduction-三个值,none: 不使用约简;mean:返回loss和的平均值;sum:返回loss的和。默认:meanlog_target:默认False,指定是否在日志空间中传递目标

平均绝对误差(L1范数损失)

L1范数损失函数,也被称为最小绝对值偏差(LAD),最小绝对值误差(LAE)。总的说来,它是把目标值 YiY_iYi 与估计值 f(xi)f(x_i)f(xi) 的绝对差值的总和 SSS 最小化:
S=∑i=1n∣Yi−f(xi)∣S=\sum_{i=1}^n|Y_i-f(x_i)|S=i=1nYif(xi)
缺点:

  • 梯度恒定,不论预测值是否接近真实值,这很容易导致发散,或者错过极值点。
  • 导数不连续,导致求解困难。这也是L1损失函数不广泛使用的主要原因。

优点:

  • 收敛速度比L2损失函数要快,这是通过对比函数图像得出来的,L1能提供更大且稳定的梯度。
    +对异常的离群点有更好的鲁棒性,下面会以例子证实。
    TensorFlow:
  • MAE | mean_absolute_error
tf.keras.losses.MAE(y_true, y_pred)
  • MeanAbsoluteError
tf.keras.losses.MeanAbsoluteError(reduction=losses_utils.ReductionV2.AUTO, name='mean_absolute_error')
参数:reduction:传入tf.keras.losses.Reduction类型值,默认AUTO,定义对损失的计算方式。
  • MeanAbsolutePercentageError:平均绝对百分比误差
tf.keras.losses.MeanAbsolutePercentageError(reduction=losses_utils.ReductionV2.AUTO, name='mean_absolute_percentage_error')
公式:loss = 100 * abs(y_true - y_pred) / y_true
参数:reduction:传入tf.keras.losses.Reduction类型值,默认AUTO,定义对损失的计算方式。
  • MAPE | mean_absolute_percentage_error:平均绝对百分比误差
tf.keras.losses.MAPE(y_true, y_pred)
公式:loss = 100 * mean(abs((y_true - y_pred) / y_true), axis=-1)
  • Huber
tf.keras.losses.Huber(delta=1.0, reduction=losses_utils.ReductionV2.AUTO, name='huber_loss')
公式:error = y_true - y_pred
参数:delta:float类型,Huber损失函数从二次变为线性的点。reduction:传入tf.keras.losses.Reduction类型值,默认AUTO,定义对损失的计算方式。

PyTorch:

  • L1Loss
torch.nn.L1Loss(size_average=None, reduce=None, reduction: str = 'mean')
参数:size_average:bool类型,为True时,返回的loss为平均值,为False时,返回的各样本的loss之和reduce:bool类型,返回值是否为标量,默认为Truereduction-三个值,none: 不使用约简;mean:返回loss和的平均值;sum:返回loss的和。默认:mean
  • l1_loss
torch.nn.functional.l1_loss(input, target, size_average=None, reduce=None, reduction='mean') → Tensor
  • SmoothL1Loss:平滑版L1损失,也被称为 Huber 损失函数。
    loss(x,y)=1n∑iziloss(x,y)=\frac{1}{n}\sum_iz_iloss(x,y)=n1izi
    其中,当 ∣xi−yi∣<beta|x_i-y_i|<betaxiyi<beta 时, 0.5(xi−yi)2/beta0.5(x_i-y_i)^2/beta0.5(xiyi)2/beta,否则 ∣xi−yi∣−0.5∗beta|x_i-y_i|-0.5*betaxiyi0.5beta
torch.nn.SmoothL1Loss(size_average=None, reduce=None, reduction: str = 'mean', beta: float = 1.0)
参数:size_average:bool类型,为True时,返回的loss为平均值,为False时,返回的各样本的loss之和reduce:bool类型,返回值是否为标量,默认为Truereduction-三个值,none: 不使用约简;mean:返回loss和的平均值;sum:返回loss的和。默认:meanbeta:默认为1,指定在L1和L2损耗之间切换的阈值
  • smooth_l1_loss
torch.nn.functional.smooth_l1_loss(input, target, size_average=None, reduce=None, reduction='mean', beta=1.0)

均方误差损失(L2范数损失)

L2范数损失函数,也被称为最小平方误差(LSE)。总的来说,它是把目标值 YiY_iYi 与估计值 f(xi)f(x_i)f(xi) 的差值的平方和 SSS 最小化:
S=∑i=1n(Yi−f(xi))2S=\sum_{i=1}^n(Y_i-f(x_i))^2S=i=1n(Yif(xi))2
缺点:

  • 收敛速度比L1慢,因为梯度会随着预测值接近真实值而不断减小。
  • 对异常数据比L1敏感,这是平方项引起的,异常数据会引起很大的损失。

优点:

  • 它使训练更容易,因为它的梯度随着预测值接近真实值而不断减小,那么它不会轻易错过极值点,但也容易陷入局部最优。
  • 它的导数具有封闭解,优化和编程非常容易,所以很多回归任务都是用MSE作为损失函数。

TensorFlow:

  • MeanSquaredError
tf.keras.losses.MeanSquaredError(reduction=losses_utils.ReductionV2.AUTO, name='mean_squared_error')
公式:loss = square(y_true - y_pred)
参数:reduction:传入tf.keras.losses.Reduction类型值,默认AUTO,定义对损失的计算方式。
  • MSE | mean_squared_error
tf.keras.losses.MSE(y_true, y_pred)
公式:loss = mean(square(y_true - y_pred), axis=-1)
  • MeanSquaredLogarithmicError
tf.keras.losses.MeanSquaredLogarithmicError(reduction=losses_utils.ReductionV2.AUTO, name='mean_squared_logarithmic_error')
公式:loss = square(log(y_true + 1.) - log(y_pred + 1.))
参数:reduction:传入tf.keras.losses.Reduction类型值,默认AUTO,定义对损失的计算方式。
  • MSLE | mean_squared_logarithmic_error
tf.keras.losses.MSLE(y_true, y_pred)
公式:loss = mean(square(log(y_true + 1) - log(y_pred + 1)), axis=-1)

PyTorch:

  • MSELoss
torch.nn.MSELoss(size_average=None, reduce=None, reduction: str = 'mean')
参数:size_average:bool类型,为True时,返回的loss为平均值,为False时,返回的各样本的loss之和reduce:bool类型,返回值是否为标量,默认为Truereduction-三个值,none: 不使用约简;mean:返回loss和的平均值;sum:返回loss的和。默认:mean
  • mse_loss
torch.nn.functional.mse_loss(input, target, size_average=None, reduce=None, reduction='mean')

Hinge loss

有人把hinge loss称为铰链损失函数,它可用于“最大间隔(max-margin)”分类,其最著名的应用是作为SVM的损失函数。hinge loss专用于二分类问题,标签值 y=±1y=\pm 1y=±1,预测值 y^∈R\hat{y}\in Ry^R。二分类问题的目标函数的要求如下:当 y^\hat{y}y^ 大于等于 ±1\pm 1±1或者小于等于 −1-11时,都是分类器确定的分类结果,此时的损失函数loss为0。而当预测值 y^∈(−1,1)\hat{y}\in(-1,1)y^(1,1) 时,分类器对分类结果不确定,loss不为0。显然,当 y^=0\hat{y} = 0y^=0 时,loss达到最大值。对于输出 y=±1y=\pm 1y=±1,当前 y^\hat{y}y^ 的损失为:
L(y)=max(0,1−y⋅y^)L(y)=max(0,1-y\cdot \hat{y})L(y)=max(0,1yy^)
扩展到多分类问题上就需要多加一个边界值,然后叠加起来。公式如下:
Li=∑j≠yimax(0,sj−syi+Δ)L_i=\sum_{j\neq y_i}max(0,s_j-s_{y_i}+\Delta)Li=j=yimax(0,sjsyi+Δ)

Tensorflow:

  • CategoricalHinge
tf.keras.losses.CategoricalHinge(reduction=losses_utils.ReductionV2.AUTO, name='categorical_hinge')
公式:loss = maximum(neg - pos + 1, 0) where neg=maximum((1-y_true)*y_pred) and pos=sum(y_true*y_pred)
参数:reduction:传入tf.keras.losses.Reduction类型值,默认AUTO,定义对损失的计算方式。
  • categorical_hinge
tf.keras.losses.categorical_hinge(y_true, y_pred)
公式:loss = maximum(neg - pos + 1, 0) where neg=maximum((1-y_true)*y_pred) and pos=sum(y_true*y_pred)
  • Hinge
tf.keras.losses.Hinge(reduction=losses_utils.ReductionV2.AUTO, name='hinge'
)
公式:loss = maximum(1 - y_true * y_pred, 0),y_true值应为-1或1。如果提供了二进制(0或1)标签,会将其转换为-1或1
参数:reduction:传入tf.keras.losses.Reduction类型值,默认AUTO,定义对损失的计算方式。
  • hinge
tf.keras.losses.hinge(y_true, y_pred)
公式:loss = mean(maximum(1 - y_true * y_pred, 0), axis=-1)
  • SquaredHinge
tf.keras.losses.SquaredHinge(reduction=losses_utils.ReductionV2.AUTO, name='squared_hinge'
)
公式:loss = square(maximum(1 - y_true * y_pred, 0)),y_true值应为-1或1。如果提供了二进制(0或1)标签,会将其转换为-1或1。
参数:reduction:传入tf.keras.losses.Reduction类型值,默认AUTO,定义对损失的计算方式。
  • squared_hinge
tf.keras.losses.squared_hinge(y_true, y_pred)
公式:loss = mean(square(maximum(1 - y_true * y_pred, 0)), axis=-1)

PyTorch:

  • HingeEmbeddingLoss:当 yn=1y_n=1yn=1时,ln=xnl_n=x_nln=xn,当 yn=−1y_n=-1yn=1 时, ln=max{0,Δ−xn}l_n=max\{0,\Delta-x_n\}ln=max{0,Δxn}
torch.nn.HingeEmbeddingLoss(margin: float = 1.0, size_average=None, reduce=None, reduction: str = 'mean')
参数:margin:float类型,默认为1.size_average:bool类型,为True时,返回的loss为平均值,为False时,返回的各样本的loss之和reduce:bool类型,返回值是否为标量,默认为Truereduction-三个值,none: 不使用约简;mean:返回loss和的平均值;sum:返回loss的和。默认:mean

余弦相似度

余弦相似度是机器学习中的一个重要概念,在Mahout等MLlib中有几种常用的相似度计算方法,如欧氏相似度,皮尔逊相似度,余弦相似度,Tanimoto相似度等。其中,余弦相似度是其中重要的一种。余弦相似度用向量空间中两个向量夹角的余弦值作为衡量两个个体间差异的大小。相比距离度量,余弦相似度更加注重两个向量在方向上的差异,而非距离或长度上。

余弦相似度更多的是从方向上区分差异,而对绝对的数值不敏感,更多的用于使用用户对内容评分来区分用户兴趣的相似度和差异,同时修正了用户间可能存在的度量标准不统一的问题(因为余弦相似度对绝对数值不敏感),公式如下:
sim(X,Y)=cosθ=x⃗⋅y⃗∣∣x∣∣⋅∣∣y∣∣sim(X,Y)=cos\theta=\frac{\vec{x}\cdot \vec{y}}{||x||\cdot ||y||}sim(X,Y)=cosθ=xyx

y

Tensorflow:

  • CosineSimilarity:请注意,所得值是介于-1和0之间的负数,其中0表示正交性,而接近-1的值表示更大的相似性。 如果y_true或y_pred是零向量,则余弦相似度将为0,而与预测值和目标值之间的接近程度无关。
tf.keras.losses.CosineSimilarity(axis=-1, reduction=losses_utils.ReductionV2.AUTO, name='cosine_similarity')
公式:loss = -sum(l2_norm(y_true) * l2_norm(y_pred))
参数:axis:默认-1,沿其计算余弦相似度的维reduction:传入tf.keras.losses.Reduction类型值,默认AUTO,定义对损失的计算方式。
  • cosine_similarity
tf.keras.losses.cosine_similarity(y_true, y_pred, axis=-1)
公式:loss = -sum(l2_norm(y_true) * l2_norm(y_pred))
参数:axis:默认-1,沿其计算余弦相似度的维

PyTorch:

  • CosineEmbeddingLoss:当 y=1y=1y=1时,loss(x,y)1−cos(x1,x2)loss(x,y)1-cos(x_1,x_2)loss(x,y)1cos(x1,x2),当 y=−1y=-1y=1 时,loss(x,y)=max(0,cos(x1,x2)−margin)loss(x,y)=max(0,cos(x_1,x_2)-margin)loss(x,y)=max(0,cos(x1,x2)margin)
torch.nn.CosineEmbeddingLoss(margin: float = 0.0, size_average=None, reduce=None, reduction: str = 'mean')
参数:margin:float类型,应为-1到1之间的数字,建议为0到0.5,默认值为0size_average:bool类型,为True时,返回的loss为平均值,为False时,返回的各样本的loss之和reduce:bool类型,返回值是否为标量,默认为Truereduction-三个值,none: 不使用约简;mean:返回loss和的平均值;sum:返回loss的和。默认:mean

损失函数理解汇总,结合PyTorch和TensorFlow2相关推荐

  1. 损失函数理解汇总,结合PyTorch1.7和TensorFlow2

    作者丨DengBoCong@知乎 来源丨https://zhuanlan.zhihu.com/p/271911178 编辑丨极市平台 本文仅用于学术分享,如有侵权,请联系后台作删文处理. 本文打算讨论 ...

  2. 收藏 | 损失函数理解汇总,结合PyTorch1.7和TensorFlow2

    点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:极市平台 AI博士笔记系列推荐 周志华<机器学习> ...

  3. 【目标检测系列】yolov3之损失函数以及边框回归pytorch源码注释以及理论理解

    1.代码下载: https://github.com/ultralytics/yolov3 2.边框回归与损失函数相关的源码,在文件utils.py中.边框回归和损失函数. 边框回归说白了就是:找到一 ...

  4. 关于二分类,多分类,及多标签分类的损失函数详解及Pytorch实现

    相信很多小伙伴最开始都是从分类任务入手深度学习这个领域的吧,这个就类似学习代码的第一课,"Hello world"一样.深度学习中,除了模型设计之外,最重要的想必就是选取合适的损失 ...

  5. 贝叶斯分类器期望损失函数理解及衍生的全新理解

    期望损失函数之所以难以理解是因为定性思维认为它是一个损失函数:一是x固定的情况下,怎么还有这么多种可能:这好理解,多分类输出就是概率向量值,对应每个类别的概率:二是怎么没有真实样本的标签:因为这个函数 ...

  6. SE模块理解+SE-Resnet模块pytorch实现

    文章目录 SE模块理解 SE实现注意力机制原因 SE-resnet网络pytorch实现 SE模块理解 SENet是Squeeze-and-Excitation Networks的简称,拿到了Imag ...

  7. 【MSE/BCE/CE】均方差、交叉熵损失函数理解

    文章目录 1 均方误差(Mean Squared Error, MSE) 1.1 MSE介绍 1.2 MSE为何不常用于分类 1.3 那什么常用于分类呢? 2 二值交叉熵损失(Binary Cross ...

  8. 高斯混合模型理解汇总

    https://blog.csdn.net/weixin_42555080/article/details/92222665 高斯混合模型终极理解 https://blog.csdn.net/lin_ ...

  9. pytorch 和 tensorflow2.0 方法替换

    Embedding初始化 pytorch: Embedding() tf2.0: random.normal() # 验证均值和方差 def confirm(weight):mean = np.sum ...

最新文章

  1. python代码大全p-21行Python代码实现拼写检查器
  2. [Django]模型学习记录篇--基础
  3. 华为杯数学建模优秀论文_数学建模经典例题(2011年国赛A题与优秀论文)
  4. WORD如何比较原文档和别人修改过的文档?
  5. linux编译c 自动化,Linux江湖06:感悟GNU C以及将Vim打造成C/C++的半自动化IDE
  6. Linux安装MySQL-MariaDB版本
  7. java多线程使用心得
  8. 【二】网络空间安全综述
  9. Surface Go1 与Surface Go2的不同 (非专业对比)
  10. 3.2.CPU中的实模式
  11. “互联网+”拯救了星巴克,出路是“第四空间
  12. CSDN代码块背景色的调整
  13. usb外接耳机声音过大解决方法
  14. App制作需要哪些技术?
  15. 为什么美国学生学的数学比我们简单,却能做出很牛逼的东西?
  16. EFilm 3.1 安装文件
  17. wodot技术客服支持
  18. IDEA 打包Web项目为war包
  19. mmdvm 接收_Yaesu FT-7800 + MMDVM 中继版解决方案
  20. 数字信号处理中的 SIMD

热门文章

  1. 分享一个开源的QT的串口示波器
  2. Docker 理论以及隔离
  3. 初设大蟒蛇之Python函数篇
  4. VS2022 与 C语言:初学者
  5. Python群发短信
  6. 计算机的音乐设置方法,让电脑开机和关机音乐更个性的设置方法(图文)
  7. bootstrap实战--微金所项目(导航栏)
  8. Linux作业 实现一个特殊的备份工具bak
  9. mysql的sqlyog学习笔记(高级查询部分)(代码用命令行显示 )
  10. 5.4 控制器的功能和工作原理