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 Web框架Pylons中使用MongoDB的例子
Dec 03 Python
python进程类subprocess的一些操作方法例子
Nov 22 Python
Python中使用语句导入模块或包的机制研究
Mar 30 Python
python脚本实现xls(xlsx)转成csv
Apr 10 Python
浅谈Python中带_的变量或函数命名
Dec 04 Python
python爬虫爬取淘宝商品信息(selenum+phontomjs)
Feb 24 Python
浅谈pycharm出现卡顿的解决方法
Dec 03 Python
python实现屏保程序(适用于背单词)
Jul 30 Python
基于python实现从尾到头打印链表
Nov 02 Python
pytorch 模拟关系拟合——回归实例
Jan 14 Python
关于Python3的import问题(pycharm可以运行命令行import错误)
Nov 18 Python
Python实现简繁体转换
Jun 07 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的变量类型和作用域详解
2014/03/12 PHP
PHP中cookie和session的区别实例分析
2014/08/28 PHP
php使用PDO方法详解
2014/12/27 PHP
PHP延迟静态绑定使用方法实例解析
2020/09/05 PHP
为数据添加append,remove功能
2006/10/03 Javascript
js removeChild 障眼法 可能出现的错误
2009/10/06 Javascript
一个简单的JS鼠标悬停特效具体方法
2013/06/17 Javascript
jquery实现pager控件示例
2014/04/09 Javascript
javascript判断是手机还是电脑访问网页的简单实例分享
2014/06/03 Javascript
基于html5和nodejs相结合实现websocket即使通讯
2015/11/19 NodeJs
jQuery实现宽屏图片轮播实例教程
2015/11/24 Javascript
JS实现字符串转日期并比较大小实例分析
2015/12/09 Javascript
JavaScript新增样式规则(推荐)
2016/07/19 Javascript
全面解析Angular中$Apply()及$Digest()的区别
2016/08/04 Javascript
Vue.js每天必学之组件与组件间的通信
2016/09/08 Javascript
Bootstrap modal使用及点击外部不消失的解决方法
2016/12/13 Javascript
jQuery实现所有验证通过方可提交的表单验证
2017/11/21 jQuery
nodejs中密码加密处理操作详解
2018/03/20 NodeJs
Django+Vue实现WebSocket连接的示例代码
2019/05/28 Javascript
新手如何快速理解js异步编程
2019/06/24 Javascript
Python简单删除目录下文件以及文件夹的方法
2015/05/27 Python
彻底理解Python list切片原理
2017/10/27 Python
python+django加载静态网页模板解析
2017/12/12 Python
使用Python和xlwt向Excel文件中写入中文的实例
2018/04/21 Python
Python3日期与时间戳转换的几种方法详解
2019/06/04 Python
python中使用ctypes调用so传参设置遇到的问题及解决方法
2019/06/19 Python
HTML5 canvas基本绘图之绘制阴影效果
2016/06/27 HTML / CSS
html5基础标签(html5视频标签 html5新标签用法)
2013/12/30 HTML / CSS
英国最全面的橄榄球联盟门票网站:Live Rugby Tickets
2018/10/06 全球购物
绿色出行口号
2014/06/18 职场文书
面试感谢信范文
2015/01/22 职场文书
2015年党风廉政建设个人总结
2015/08/18 职场文书
Prometheus 监控MySQL使用grafana展示
2021/08/30 MySQL
用Python可视化新冠疫情数据
2022/01/18 Python
详细聊一聊mysql的树形结构存储以及查询
2022/04/05 MySQL
ubuntu开机后ROS程序自启动问题
2022/12/24 Servers