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爬虫之打包生成exe文件
Nov 06 Python
Python实现的基于优先等级分配糖果问题算法示例
Apr 25 Python
Linux(Redhat)安装python3.6虚拟环境(推荐)
May 05 Python
python中实现字符串翻转的方法
Jul 11 Python
Python实现合并两个有序链表的方法示例
Jan 31 Python
Pyqt5 基本界面组件之inputDialog的使用
Jun 25 Python
关于 Python opencv 使用中的 ValueError: too many values to unpack
Jun 28 Python
详解Python可视化神器Yellowbrick使用
Nov 11 Python
pip安装tensorflow的坑的解决
Apr 19 Python
Python带参数的装饰器运行原理解析
Jun 09 Python
python实现计算图形面积
Feb 22 Python
Python安装使用Scrapy框架
Apr 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
利用PHP+JS实现搜索自动提示(实例)
2013/06/09 PHP
PHP二进制与字符串之间的相互转换教程
2016/10/14 PHP
Symfony2获取web目录绝对路径、相对路径、网址的方法
2016/11/14 PHP
php7新特性的理解和比较总结
2019/04/14 PHP
提高 DHTML 页面性能
2006/12/25 Javascript
ASP SQL防注入的方法
2008/12/25 Javascript
利用JS延迟加载百度分享代码,提高网页速度
2013/07/01 Javascript
Extjs grid panel自带滚动条失效的解决方法
2014/09/11 Javascript
基于jquery实现弹幕效果
2016/09/29 Javascript
js 作用域和变量详解
2017/02/16 Javascript
vue.js国际化 vue-i18n插件的使用详解
2017/07/07 Javascript
微信小程序之圆形进度条实现思路
2018/02/22 Javascript
Postman的下载及安装教程详解
2018/10/16 Javascript
JavaScript实现五子棋游戏的方法详解
2019/07/08 Javascript
JS pushlet XMLAdapter适配器用法案例解析
2020/10/16 Javascript
[05:31]DOTA2英雄梦之声_第08期_莉娜
2014/06/23 DOTA
[40:53]完美世界DOTA2联赛PWL S3 Magma vs DLG 第二场 12.18
2020/12/20 DOTA
Python中atexit模块的基本使用示例
2015/07/08 Python
Python爬取APP下载链接的实现方法
2016/09/30 Python
Python中动态创建类实例的方法
2017/03/24 Python
python3实现抓取网页资源的 N 种方法
2017/05/02 Python
基于Python os模块常用命令介绍
2017/11/03 Python
python3第三方爬虫库BeautifulSoup4安装教程
2018/06/19 Python
python实现猜数字小游戏
2020/03/24 Python
python format 格式化输出方法
2018/07/16 Python
Python HTML解析器BeautifulSoup用法实例详解【爬虫解析器】
2019/04/05 Python
python 修改本地网络配置的方法
2019/08/14 Python
pycharm显示远程图片的实现
2019/11/04 Python
python socket 聊天室实例代码详解
2019/11/14 Python
Python 模拟动态产生字母验证码图片功能
2019/12/24 Python
python用WxPython库实现无边框窗体和透明窗体实现方法详解
2020/02/21 Python
什么是python的自省
2020/06/21 Python
Pytest测试框架基本使用方法详解
2020/11/25 Python
css3实现波纹特效、H5实现动态波浪效果
2018/01/31 HTML / CSS
大学课外活动总结
2014/07/09 职场文书
大学生心理健康教育心得体会
2016/01/12 职场文书