目录

1.LOSS

1.1预置loss函数

1.2自定义loss函数

2.metric

2.1预设的metric类

2.2自定义metric类


paddle除了预置的计算指标函数外,还支持自定义计算指标

1.LOSS

1.1预置loss函数

paddle.nn下预置了常见的loss函数

  • paddle.nn.BCELoss                  BCELoss层
  • paddle.nn.BCEWithLogitsLoss BCEWithLogitsLoss层
  • paddle.nn.CrossEntropyLoss                交叉熵损失层
  • paddle.nn.CTCLoss                        CTCLoss层
  • paddle.nn.HSigmoidLoss                    层次sigmoid损失层
  • paddle.nn.KLDivLoss                          Kullback-Leibler散度损失层
  • paddle.nn.L1Loss                                L1损失层
  • paddle.nn.MarginRankingLoss             MarginRankingLoss层
  • paddle.nn.MSELoss                                均方差误差损失层
  • paddle.nn.NLLLoss                                NLLLoss层
  • paddle.nn.SmoothL1Loss                        平滑L1损失层

1.2自定义loss函数

类似于网络层,重写__init__和forward()函数。

import paddle
from paddle import nn
from paddle.nn import functional as F
import numpy as np
class myloss(nn.Layer):def __init__(self):super(myloss, self).__init__()def forward(self, outputs, labels):return F.softmax_with_cross_entropy(outputs, labels).mean()outputs = paddle.rand([4, 10], dtype='float32')
labels = paddle.to_tensor([[0], [2], [4], [6]])loss = myloss()
print(loss(outputs, labels))####
Tensor(shape=[1], dtype=float32, place=CPUPlace, stop_gradient=True,[2.49037051])

2.metric

2.1预设的metric类

在paddle.metric下有许多预置的评估函数类

  • Metric        评估器基类
  • Accuracy        准确率评估器类
  • Auc                auc评估器类
  • Precision        精确率评估器类
  • Recall                召回率评估器类

使用方式一:单独使用

compute函数将输入数据做一定的处理(可加速update函数计算),update函数接受compute的结果数据,计算出一个batch的评估数据。accumulate利用update中积累的成员变量数据进行计算后返回。

x = paddle.to_tensor(np.array([[0.1, 0.2, 0.3, 0.4],[0.1, 0.4, 0.3, 0.2],[0.1, 0.2, 0.4, 0.3],[0.1, 0.2, 0.3, 0.4]]))
y = paddle.to_tensor(np.array([[0], [1], [2], [3]]))metric = paddle.metric.Accuracy()
# 处理输入的数据(predictions,labels)
inputs = metric.compute(x, y)
# 对一个batch做计算
acc = metric.update(inputs)
# 累积所有的batch的计算结果
fin_acc = metric.accumulate()print(fin_acc)####
0.75

方式二:paddle.model封装的模型中使用

model.prepare(optim,loss=paddle.nn.CrossEntropyLoss(),metrics=paddle.metric.Accuracy())

2.2自定义metric类

重写下面几个方法就可以实现自定义的metric类

from paddle.metric import Metricclass Precision(Metric):def __init__(self, name='precision', *args, **kwargs):super(Precision, self).__init__(*args, **kwargs)self.tp = 0  # true positiveself.fp = 0  # false positiveself._name = namedef update(self, preds, labels):if isinstance(preds, paddle.Tensor):preds = preds.numpy()elif not _is_numpy_(preds):raise ValueError("The 'preds' must be a numpy ndarray or Tensor.")if isinstance(labels, paddle.Tensor):labels = labels.numpy()elif not _is_numpy_(labels):raise ValueError("The 'labels' must be a numpy ndarray or Tensor.")sample_num = labels.shape[0]preds = np.floor(preds + 0.5).astype("int32")for i in range(sample_num):pred = preds[i]label = labels[i]if pred == 1:if pred == label:self.tp += 1else:self.fp += 1def reset(self):"""实现reset方法,每个Epoch结束后进行评估指标的重置,这样下个Epoch可以重新进行计算。"""self.tp = 0self.fp = 0def accumulate(self):ap = self.tp + self.fpreturn float(self.tp) / ap if ap != 0 else .0def name(self):"""实现name方法,返回定义的评估指标名字"""return self._name  

paddlepaddle(五)自定义评价指标相关推荐

  1. 【安卓开发 】Android初级开发(五)自定义View

    1.自定义View的构造函数调用的场景 package com.sina.myapplication;import android.content.Context; import android.ut ...

  2. 五 自定义View LayoutParams

    知识点整理 1. LayoutParams 2. MarginLayoutParams 3 LayoutParams与View如何建立联系 4 自定义LayoutParams 4.1 创建自定义属性 ...

  3. python Tags 母板 组件 静态文件相关 自定义simpletag inclusion_tag

    一.Tags(一)for 1.基本用法 <ul> {% for user in user_list %} <li>{{ user.name }}</li> {% e ...

  4. 图像语义分割及常用评价指标

    语义分割学习记录 语义分割概述 图像分类(image classification) 目标检测(object detection) 语义分割(semantic segmentation) 实例分割(i ...

  5. android 分时图x轴宽度,一步一步教你写股票走势图——分时图二(自定义xy轴)...

    目录 一步一步教你写股票走势图--分时图一(概述) 一步一步教你写股票走势图--分时图二(自定义xy轴) 一步一步教你写股票走势图--分时图三(对齐图表.自定义柱状图高亮) 一步一步教你写股票走势图- ...

  6. 【涡扇发动机RUL专题】:分段退化标签,测试集可视化、评价指标

    涡扇发动机RUL预测 常用的数据处理技术 分段线性退化标签处理 评价指标 单台发动机可视化 单独可视化的效果 查看任意一台发动机的RUL预测情况 总结 常用的数据处理技术 一直以为涡扇发动机的RUL不 ...

  7. 图像分割性能评价指标

    图像语义分割及常用评价指标 常用指标 什么是混淆矩阵(Confusion Matrix) 混淆矩阵实际就是一个矩阵,该矩阵的元素是模型的分类结果,即模型正确分类.错误分类的样本的个数. 目前只看了基于 ...

  8. android微信分享怎么自定义样式,自定义微信分享样式设置教程

    一.功能效果 自定义微信分享可以设置个性化的分享图片.标题.描述,让分享内容更加受到用户的喜爱和欢迎. 二.功能说明 [版本]网站标准版及以上 [前提]1.需要授权已认证的公众号(支持服务号.订阅号) ...

  9. android自定义横线,Android实现自带横线的EditText

    (一)问题 怎样实现带有横栏的EditText(像记事本的编辑界面那样)? (二)初步思路 1.通过修改EditText背景来实现(系统背景是一个框形图片,内部透明,替换为一个带有横栏的图片即可) 2 ...

最新文章

  1. sqlconnection,sqlcommand,SqlDataAdapter ,ExecuteNonQuery,ExecuteScalar
  2. python中不可不知的一个重要的集合模块
  3. python中类似对象吗_在Python中,两个对象什么时候相同? - python
  4. 统计学习方法笔记(二)-kd树原理及python实现
  5. java super父类的父类_合理使用父类的财富——Java中的super
  6. Linux之Shell脚本的条件判断和函数
  7. [考试]20150528
  8. Ubuntu常用服务器ftp、ssh
  9. django请求和响应
  10. java通过反射调用matlab生成的jar包中的方法(1)--java调用matlab的参数个数和类型问题
  11. 堆(Heap)数据结构
  12. sobol灵敏度分析matlab_灵敏度分析 使用MATLAB编写
  13. java zip解压抛出异常,java – ZipFile抛出错误,但ZipInputStream能够解压缩归档
  14. 线性回归模型异方差解决方法
  15. “我在网红书店,从来不看书”
  16. 如何用木板做桥_木头做桥基,300年不倒(组图)
  17. COleDateTime SYSTEMTIME CTime
  18. android TextView 中划线、下划线 跑马灯
  19. 解决java导出excel因数据量大占内存的问题
  20. HashMap是线程安全的吗?有什么线程安全的方法

热门文章

  1. 怎么在html花一条竖线,怎样在网页中画一条竖线?
  2. 【python 下载器】python下载电影视频电视剧
  3. [天池竞赛系列]IJCAI-17 口碑商家客流量预测冠军思路
  4. 一分钟教你苹果手机怎么恢复删除的照片!
  5. lagou-mybatis-3:mybatis官方文档
  6. Extjs4用Firefox来显示柱形图无法显示渐变颜色
  7. 电脑怎么连接手机wifi
  8. oracle中nextday,Oracle日期函数 next_day
  9. Facebook 广告投放中有哪些不允许的做法
  10. 派派交友机器人_派派技能免费教大家点技能