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教程之用py2exe将PY文件转成EXE文件
Jun 12 Python
Python实现登录人人网并抓取新鲜事的方法
May 11 Python
使用Python进行QQ批量登录的实例代码
Jun 11 Python
更改Python的pip install 默认安装依赖路径方法详解
Oct 27 Python
python爬虫获取新浪新闻教学
Dec 23 Python
python实现合并两个排序的链表
Mar 03 Python
使用Python进行体育竞技分析(预测球队成绩)
May 16 Python
python把ipynb文件转换成pdf文件过程详解
Jul 09 Python
python装饰器使用实例详解
Dec 14 Python
Python Selenium截图功能实现代码
Apr 26 Python
Python模块常用四种安装方式
Oct 20 Python
Python Numpy库的超详细教程
Apr 06 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 session会话的安全性分析
2011/09/08 PHP
Windows下PHP开发环境搭建教程(Apache+PHP+MySQL)
2016/06/13 PHP
PHP延迟静态绑定的深入讲解
2018/04/02 PHP
PHP学习笔记之session
2018/05/06 PHP
Laravel框架控制器的middleware中间件用法分析
2019/09/30 PHP
Laravel解决nesting level错误和隐藏index.php的问题
2019/10/12 PHP
Laravel5.5 手动分页和自定义分页样式的简单实现
2019/10/15 PHP
Locate a File Using a File Open Dialog Box
2007/06/18 Javascript
原生javascript实现图片轮播效果代码
2010/09/03 Javascript
JSuggest自动匹配下拉框使用方法(示例代码)
2013/12/27 Javascript
jQuery实现页面评论栏中访客信息自动填写功能的方法
2016/05/23 Javascript
Angularjs 创建可复用组件实例代码
2016/10/09 Javascript
BootStrap Validator 版本差异问题导致的submitHandler失效问题的解决方法
2016/12/01 Javascript
jQuery Validation Engine验证控件调用外部函数验证的方法
2017/01/18 Javascript
mui上拉加载功能实例详解
2017/04/13 Javascript
angular使用bootstrap方法手动启动的实例代码
2017/07/18 Javascript
JavaScript中递归实现的方法及其区别
2017/09/12 Javascript
jQuery封装animate.css的实例
2018/01/04 jQuery
iview日期控件,双向绑定日期格式的方法
2018/03/15 Javascript
详解使用create-react-app快速构建React开发环境
2018/05/16 Javascript
使用gulp构建前端自动化的方法示例
2018/12/25 Javascript
详解Vue中组件传值的多重实现方式
2019/08/16 Javascript
layui 解决富文本框form表单提交为空的问题
2019/10/26 Javascript
JS实现贪吃蛇游戏
2019/11/15 Javascript
Vue3+elementui plus创建项目的方法
2020/12/01 Vue.js
python 分离文件名和路径以及分离文件名和后缀的方法
2018/10/21 Python
python替换字符串中的子串图文步骤
2019/06/19 Python
如何使用python把ppt转换成pdf
2019/06/29 Python
Python爬虫 scrapy框架爬取某招聘网存入mongodb解析
2019/07/31 Python
英国最受欢迎的在线隐形眼镜商店:VisionDirect.co.uk
2018/12/06 全球购物
Java里面Pass by value和Pass by Reference是什么意思
2016/05/02 面试题
银行贷款承诺书
2014/03/29 职场文书
见习期个人总结
2015/03/05 职场文书
单身证明范本
2015/06/15 职场文书
警示教育观后感
2015/06/17 职场文书
Python 恐龙跑跑小游戏实现流程
2022/02/15 Python