# PloyLoss记录

## 1 表达式

1.1 CE LOSS泰勒展开表达式：
L C E = − log ⁡ ( P t ) = ∑ j ∞ ( 1 − P t ) j j {{L}{CE}}=-\log \left( {{P}{t}} \right)=\sum\limits_{j}^{\infty }{\frac{{{\left( 1-{{P}{t}} \right)}^{j}}}{j}}L C E ​=−lo g (P t ​)=j ∑∞​j (1 −P t ​)j ​
1.2 Focal LOSS泰勒展开表达式：
L F L = − ( 1 − P t ) γ ∗ log ⁡ ( P t ) = ∑ j ∞ ( 1 − P t ) j + γ j {{L}
{FL}}=-{{\left( 1-{{P}{t}} \right)}^{\gamma }}\log \left( {{P}{t}} \right)=\sum\limits{j}^{\infty }{\frac{{{\left( 1-{{P}_{t}} \right)}^{j+\gamma }}}{j}}L F L ​=−(1 −P t ​)γ∗lo g (P t ​)=j ∑∞​j (1 −P t ​)j +γ​
1.3 Poly LOSS泰勒展开表达式：*
L P l o y = α 1 ( 1 − P t ) + α 2 ( 1 − P t ) 2 + α 3 ( 1 − P t ) 3 + . . . + α ∞ ( 1 − P t ) ∞ = ∑ j = 1 ∞ α j ( 1 − P t ) j {{L}
{Ploy}}={{\alpha }{1}}\left( 1-{{P}{t}} \right)+{{\alpha }{2}}{{\left( 1-{{P}{t}} \right)}^{2}}+{{\alpha }{3}}{{\left( 1-{{P}{t}} \right)}^{3}}+…+{{\alpha }{\infty }}{{\left( 1-{{P}{t}} \right)}^{\infty }}=\sum\limits_{j=1}^{\infty }{{{\alpha }{j}}{{\left( 1-{{P}{t}} \right)}^{j}}}L P l o y ​=α1 ​(1 −P t ​)+α2 ​(1 −P t ​)2 +α3 ​(1 −P t ​)3 +…+α∞​(1 −P t ​)∞=j =1 ∑∞​αj ​(1 −P t ​)j

1.4 PolyLOSS-CE
F P l o y − N = − log ⁡ ( P t ) + ∑ j = 1 N ε j ( 1 − P t ) j {{F}{Ploy-N}}=-\log \left( {{P}{t}} \right)+\sum\limits_{j=1}^{N}{{{\varepsilon }{j}}{{\left( 1-{{P}{t}} \right)}^{j}}}F P l o y −N ​=−lo g (P t ​)+j =1 ∑N ​εj ​(1 −P t ​)j

1.5 PolyLOSS-Focal
L P l o y − N = − ( 1 − P t ) γ log ⁡ ( P t ) + ∑ j = 1 N ε j ( 1 − P t ) j + γ {{L}{Ploy-N}}=-{{\left( 1-{{P}{t}} \right)}^{{\gamma }}}\log \left( {{P}{t}} \right)+\sum\limits_{j=1}^{N}{{{\varepsilon }{j}}{{\left( 1-{{P}{t}} \right)}^{j+\gamma }}}L P l o y −N ​=−(1 −P t ​)γ​lo g (P t ​)+j =1 ∑N ​εj ​(1 −P t ​)j +γ

## 3 代码实现

def binary_focal_loss(gamma=2, alpha=0.25):
"""
Binary form of focal loss.

适用于二分类问题的focal loss

focal_loss(p_t) = -alpha_t * (1 - p_t)**gamma * log(p_t)
where p = sigmoid(x), p_t = p or 1 - p depending on if the label is 1 or 0, respectively.

References:
https://arxiv.org/pdf/1708.02002.pdf
Usage:
model.compile(loss=[binary_focal_loss(alpha=.25, gamma=2)], metrics=["accuracy"], optimizer=adam)
"""
alpha = tf.constant(alpha, dtype=tf.float32)
gamma = tf.constant(gamma, dtype=tf.float32)

def binary_focal_loss_fixed(y_true, y_pred):
"""
y_true shape need be (None,1)
y_pred need be compute after sigmoid
"""
y_true = tf.cast(y_true, tf.float32)
alpha_t = y_true*alpha + (K.ones_like(y_true)-y_true)*(1-alpha)

p_t = y_true*y_pred + (K.ones_like(y_true)-y_true)*(K.ones_like(y_true)-y_pred) + K.epsilon()
focal_loss = - alpha_t * K.pow((K.ones_like(y_true)-p_t),gamma) * K.log(p_t)
return K.mean(focal_loss)
return binary_focal_loss_fixed



def multi_category_focal_loss1(alpha, gamma=2.0):
"""
focal loss for multi category of multi label problem
适用于多分类或多标签问题的focal loss
alpha用于指定不同类别/标签的权重，数组大小需要与类别个数一致
当你的数据集不同类别/标签之间存在偏斜，可以尝试适用本函数作为loss
Usage:
model.compile(loss=[multi_category_focal_loss1(alpha=[1,2,3,2], gamma=2)], metrics=["accuracy"], optimizer=adam)
"""
epsilon = 1.e-7
alpha = tf.constant(alpha, dtype=tf.float32)

gamma = float(gamma)
def multi_category_focal_loss1_fixed(y_true, y_pred):
y_true = tf.cast(y_true, tf.float32)
y_pred = tf.clip_by_value(y_pred, epsilon, 1. - epsilon)
y_t = tf.multiply(y_true, y_pred) + tf.multiply(1-y_true, 1-y_pred)
ce = -tf.log(y_t)
weight = tf.pow(tf.subtract(1., y_t), gamma)
fl = tf.matmul(tf.multiply(weight, ce), alpha)
loss = tf.reduce_mean(fl)
return loss
return multi_category_focal_loss1_fixed



PloyLoss-CE-1:

def poly1_cross_entropy(logits, labels, epsilon=1.0):
pt = tf.reduce_sum(labels * tf.nn.softmax(logits), axis=-1)
CE = tf.nn.softmax_cross_entropy_with_logits(labels, logits)
Poly1 = CE + epsilon * (1 - pt)
return Poly1


PloyLoss-Focal-1:

def poly1_focal_loss(logits, labels, epsilon=1.0, gamma=2.0):
p = tf.math.sigmoid(logits)
pt = labels * p + (1 - labels) * (1 - p)
FL = focal_loss(pt, gamma)
Poly1 = FL + epsilon * tf.math.pow(1 - pt, gamma + 1)
return Poly1


## 4 参考

Original: https://blog.csdn.net/weixin_42232041/article/details/124472126
Author: 我有酒两杯
Title: PloyLoss记录

(0)

### 大家都在看

• #### 训练集、验证集、测试集的作用

1. 前言 本篇是看完吴恩达老师DL的课，写来当笔记看的，若有错误与疑虑，请指正或提出。 2. 训练集、验证集、测试集的作用 训练集（ Training set）的作用： 更新模型…

人工智能 2023年7月28日
0179
• #### 图像的形态学开操作(开运算)和闭操作(闭运算)的概念和作用,并用OpenCV的函数morphologyEx()实现对图像的开闭操作

大家看这篇博文前可以先看一看下面这篇博文，下面这篇博文是这篇博文的基础：详解图像形态学操作之图形的腐蚀和膨胀的概念和运算过程,并利用OpenCV的函数erode()和函数dilat…

人工智能 2023年6月19日
0184
• #### 回归分析预测世界大学综合得分

回归分析预测世界大学综合得分 大学排名是一个非常重要同时也极富挑战性与争议性的问题，一所大学的综合实力涉及科研、师资、学生等方方面面。目前全球有上百家评估机构会评估大学的综合得分进…

人工智能 2023年6月17日
0150
• #### python学习（二）：python的数据挖掘技术，网络爬虫

* &#x5339;&#x914D;&#x524D;&#x9762;&#x7684;&#x5B57;&#x7B26; 0 &…

人工智能 2023年6月19日
0173
• #### 使用格拉姆角场(GAF)以将时间序列数据转换为图像

这篇文章将会详细介绍格拉姆角场 （Gramian Angular Field），并通过代码示例展示”如何将时间序列数据转换为图像”。 Gramian Ang…

人工智能 2023年7月4日
0193
• #### 【无标题】

这样的配音软件还有很多。跟大家分享一下很多用户都在使用的三款配音工具。生成的声音自然流畅，发音清晰饱满，听起来像真人。让我们来看看吧！ [En] There are many su…

人工智能 2023年5月27日
0170
• #### ReLLIE Deep Reinforcement Learning for Customized Low-Light Image Enhancement

文章目录 ReLLIE Deep Reinforcement Learning for Customized Low-Light Image Enhancement * 0 Abs…

人工智能 2023年6月22日
0148
• #### Tensorflow框架学习记录–day01–文件读取通用流程以及案例：读取狗的图片

Tensorflow框架学习记录–day01–文件读取通用流程以及案例：读取狗的图片 （相关代码和图片资料若有需要可以私信） 有三种获取数据到Tensorflow程序的方法 1、Q…

人工智能 2023年5月24日
0174
• #### YOLOv7——训练自己的数据集

论文地址：https://arxiv.org/abs/2207.02696 源码地址：https://github.com/WongKinYiu/yolov7 下载好代码包，解压后…

人工智能 2023年7月21日
0145
• #### 解决RuntimeError: Expected all tensors to be on the same device, but found at least two devices, cp

今天在把.pt文件转ONNX文件时，遇到此错误。 报错 RuntimeError: Expected all tensors to be on the same device, b…

人工智能 2023年7月20日
0115
• #### 机器学习常用模型-线性回归模型详解（简单易懂）

线性回归模型是机器学习常用模型之一，机器学习的本质就是以数据为驱动，自主的从数据中寻找规律的方法，机器学习有如下特点： 更少的人为假设和定义 更灵活的应用 更高的准确度 常见的机器…

人工智能 2023年6月17日
0149
• #### ESRGAN官方代码解读

ESRGAN网络结构 一.生成器 生成网络的作用是输入一张低分辨率图片，生成高分辨率图片网络共由几部分组成：1.浅层特征抽取网络，提取浅层特征。低分辨率图像进入后会经过一个卷积+R…

人工智能 2023年7月12日
0140
• #### paddle学习

1. paddlepaddle安装 conda create -n paddle_env python=3.9 -y conda activate paddle_env conda…

人工智能 2023年7月1日
0177
• #### Pandas 五：怎样新增数据列

在进行数据分析时，经常需要按照一定条件创建新的数据列，然后进行进一步分析。1.直接赋值2.df.apply方法3.df.assign方法4.按条件选择分组分别赋值1 import …

人工智能 2023年7月7日
0165
• #### 目标检测中的anchorproposals、Region Proposal什么意思？

1、 proposal proposal：候选框。指的是二阶段方法中RPN的输出框，也就是对anchor第一次做回归得到的结果。（anchor（基于一个中心点创建出的几种大小和长宽…

人工智能 2023年7月28日
0160
• #### 基于遗传算法车辆路径问题（VRP）

一、车辆路径问题简介与求解要求 交通运输是国民经济的动脉，各种运输方式在日常运输营运管理工作中都要面对这样一个共同的问题：如何为载运工具(汽车，列车，轮船和飞机，统称为车辆)确定行…

人工智能 2023年6月24日
0237