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 相关文章推荐
Windows下PyMongo下载及安装教程
Apr 27 Python
Python判断列表是否已排序的各种方法及其性能分析
Jun 20 Python
基于python代码实现简易滤除数字的方法
Jul 17 Python
Python 新建文件夹与复制文件夹内所有内容的方法
Oct 27 Python
使用celery执行Django串行异步任务的方法步骤
Jun 06 Python
python pandas写入excel文件的方法示例
Jun 25 Python
解决Pycharm 包已经下载,但是运行代码提示找不到模块的问题
Aug 31 Python
python 检查数据中是否有缺失值,删除缺失值的方式
Dec 02 Python
pycharm 设置项目的根目录教程
Feb 12 Python
python Django 反向访问器的外键冲突解决
May 20 Python
python 通过文件夹导入包的操作
Jun 01 Python
Python同时迭代多个序列的方法
Jul 28 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
PHP调用Twitter的RSS的实现代码
2010/03/10 PHP
PHP递归调用的小技巧讲解
2013/02/19 PHP
PHP通过内置函数memory_get_usage()获取内存使用情况
2014/11/20 PHP
php通过array_merge()函数合并两个数组的方法
2015/03/18 PHP
php获取客户端IP及URL的方法示例
2017/02/03 PHP
飞鱼(shqlsl) javascript作品集
2006/12/16 Javascript
javascript json2 使用方法
2010/03/16 Javascript
DOM基础教程之使用DOM
2015/01/19 Javascript
js简单实现调整网页字体大小的方法
2016/07/23 Javascript
JavaScript使用键盘输入控制实现数字验证功能
2016/08/19 Javascript
bootstrap table使用入门基本用法
2017/05/24 Javascript
js实现登录注册框手机号和验证码校验(前端部分)
2017/09/28 Javascript
vue router使用query和params传参的使用和区别
2017/11/13 Javascript
vue.js vue-router如何实现无效路由(404)的友好提示
2017/12/20 Javascript
JS简单获取并修改input文本框内容的方法示例
2018/04/08 Javascript
Vue全局loading及错误提示的思路与实现
2019/08/09 Javascript
[50:58]2018DOTA2亚洲邀请赛 4.1 小组赛 B组 Mineski vs EG
2018/04/03 DOTA
详解Python中的静态方法与类成员方法
2017/02/28 Python
python使用pil库实现图片合成实例代码
2018/01/20 Python
解决DataFrame排序sort的问题
2018/06/07 Python
对pandas中Series的map函数详解
2018/07/25 Python
对python中词典的values值的修改或新增KEY详解
2019/01/20 Python
python+webdriver自动化环境搭建步骤详解
2019/06/03 Python
python文件操作的简单方法总结
2019/11/07 Python
python属于跨平台语言码
2020/06/09 Python
python 基于wx实现音乐播放
2020/11/24 Python
HTML5 canvas 基本语法
2009/08/26 HTML / CSS
ANINE BING官方网站:奢华的衣橱基本款和时尚永恒的单品
2019/11/26 全球购物
软件测试工程师结构化面试题库
2016/11/23 面试题
若干个Java基础面试题
2015/05/19 面试题
2014年小学植树节活动方案
2014/03/02 职场文书
小学国旗下的演讲稿
2014/08/28 职场文书
2014教师教育实践活动对照检查材料思想汇报
2014/09/21 职场文书
2016年九九重阳节活动总结
2016/04/01 职场文书
MYSQL(电话号码,身份证)数据脱敏的实现
2021/05/28 MySQL
深入理解pytorch库的dockerfile
2022/06/10 Python