keras中模型训练class_weight,sample_weight区别说明


Posted in Python onMay 23, 2020

keras 中fit(self, x=None, y=None, batch_size=None, epochs=1, verbose=1, callbacks=None, validation_split=0.0,

validation_data=None, shuffle=True, class_weight=None, sample_weight=None, initial_epoch=0,

steps_per_epoch=None, validation_steps=None)

官方文档中:

class_weight:字典,将不同的类别映射为不同的权值,该参数用来在训练过程中调整损失函数(只能用于训练)。该参数在处理非平衡的训练数据(某些类的训练样本数很少)时,可以使得损失函数对样本数不足的数据更加关注。

sample_weight:权值的numpy array,用于在训练时调整损失函数(仅用于训练)。可以传递一个1D的与样本等长的向量用于对样本进行1对1的加权,或者在面对时序数据时,传递一个的形式为(samples,sequence_length)的矩阵来为每个时间步上的样本赋不同的权。这种情况下请确定在编译模型时添加了sample_weight_mode='temporal'。

class_weight---主要针对的上数据不均衡问题,比如:异常检测的二项分类问题,异常数据仅占1%,正常数据占99%; 此时就要设置不同类对loss的影响。

sample_weigh---主要解决的是样本质量不同的问题,比如前1000个样本的可信度,那么它的权重就要高,后1000个样本可能有错、不可信,那么权重就要调低。

补充知识:Keras 中数据不均衡时,metrics,class_weight的设置方法

当数据处理不均衡时,比如处理癌症训练问题,有病样本很少,参考:

http://www.deepideas.net/unbalanced-classes-machine-learning/

主要从两个方面着手:

一、loss函数的权重问题

训练时,设置的权重:

class_weight={
  1: n_non_cancer_samples / n_cancer_samples * t
}

二、编译时设置模型的metrics

def sensitivity(y_true, y_pred):
  true_positives = K.sum(K.round(K.clip(y_true * y_pred, 0, 1)))
  possible_positives = K.sum(K.round(K.clip(y_true, 0, 1)))
  return true_positives / (possible_positives + K.epsilon())

def specificity(y_true, y_pred):
  true_negatives = K.sum(K.round(K.clip((1-y_true) * (1-y_pred), 0, 1)))
  possible_negatives = K.sum(K.round(K.clip(1-y_true, 0, 1)))
  return true_negatives / (possible_negatives + K.epsilon())
model.compile(
  loss='binary_crossentropy',
  optimizer=RMSprop(0.001),
  metrics=[sensitivity, specificity]
)

以上这篇keras中模型训练class_weight,sample_weight区别说明就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python 算法 排序实现快速排序
Jun 05 Python
python使用arp欺骗伪造网关的方法
Apr 24 Python
Python实现求解括号匹配问题的方法
Apr 17 Python
Python实现打砖块小游戏代码实例
May 18 Python
PyQt5创建一个新窗口的实例
Jun 20 Python
Python Django实现layui风格+django分页功能的例子
Aug 29 Python
Flask模板引擎Jinja2使用实例
Apr 23 Python
基于python实现查询ip地址来源
Jun 02 Python
pycharm2020.1.2永久破解激活教程,实测有效
Oct 29 Python
Pycharm Plugins加载失败问题解决方案
Nov 28 Python
python进行二次方程式计算的实例讲解
Dec 06 Python
PyTorch 如何设置随机数种子使结果可复现
May 12 Python
浅谈keras中的Merge层(实现层的相加、相减、相乘实例)
May 23 #Python
Keras实现将两个模型连接到一起
May 23 #Python
keras 获取某层输出 获取复用层的多次输出实例
May 23 #Python
给keras层命名,并提取中间层输出值,保存到文档的实例
May 23 #Python
keras小技巧——获取某一个网络层的输出方式
May 23 #Python
keras自定义回调函数查看训练的loss和accuracy方式
May 23 #Python
Keras设定GPU使用内存大小方式(Tensorflow backend)
May 22 #Python
You might like
日本因肺炎疫情影响,这几部动漫推延播放!
2020/03/03 日漫
php与java通过socket通信的实现代码
2013/10/21 PHP
php+xml结合Ajax实现点赞功能完整实例
2015/01/30 PHP
PHP7.0安装笔记整理
2015/08/28 PHP
PHP实现QQ快速登录的方法
2016/09/28 PHP
PHP递归算法的简单实例
2019/02/28 PHP
php ActiveMQ的安装与使用方法图文教程
2020/02/23 PHP
Javascript与vbscript数据共享
2007/01/09 Javascript
javascript显示中文日期的方法
2015/06/18 Javascript
Jquery代码实现图片轮播效果(一)
2015/08/12 Javascript
BootStrap模态框不垂直居中的解决方法
2017/10/19 Javascript
关于Webpack dev server热加载失败的解决方法
2018/02/22 Javascript
用 js 写一个 js 解释器过程详解
2019/08/02 Javascript
vue使用vant中的checkbox实现全选功能
2020/11/17 Vue.js
JS数据类型分类及常用判断方法
2020/11/19 Javascript
[34:10]Secret vs VG 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.24
2019/09/10 DOTA
在Python的Django框架中实现Hacker News的一些功能
2015/04/17 Python
解决python3.5 正常安装 却不能直接使用Tkinter包的问题
2019/02/22 Python
PyQt5的安装配置过程,将ui文件转为py文件后显示窗口的实例
2019/06/19 Python
django搭建项目配置环境和创建表过程详解
2019/07/22 Python
Python MongoDB 插入数据时已存在则不执行,不存在则插入的解决方法
2019/09/24 Python
超全Python图像处理讲解(多模块实现)
2020/04/13 Python
如何在windows下安装Pycham2020软件(方法步骤详解)
2020/05/03 Python
python如何查看安装了的模块
2020/06/23 Python
解析HTML5中的新功能本地存储localStorage
2016/03/01 HTML / CSS
UNDONE手表官网:世界领先的定制手表品牌
2018/11/13 全球购物
广告设计专业自荐信范文
2013/11/14 职场文书
师范大学毕业自我鉴定
2013/11/21 职场文书
大专应届生个人的自我评价
2013/11/21 职场文书
优秀大学生推荐信范文
2013/11/28 职场文书
工程造价专业大学生职业生涯规划书
2014/01/18 职场文书
yy婚礼主持词
2014/03/14 职场文书
贷款担保申请书
2014/05/20 职场文书
团队激励口号
2014/06/06 职场文书
2015新年寄语大全
2014/12/08 职场文书
Java实现二分搜索树的示例代码
2022/03/17 Java/Android