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最基本的输入输出详解
Apr 25 Python
详解使用python crontab设置linux定时任务
Dec 08 Python
Python实现数据库并行读取和写入实例
Jun 09 Python
Python常见内置高效率函数用法示例
Jul 31 Python
在Python中实现替换字符串中的子串的示例
Oct 31 Python
一文了解Python并发编程的工程实现方法
May 31 Python
django ManyToManyField多对多关系的实例详解
Aug 09 Python
python实现数据清洗(缺失值与异常值处理)
Dec 02 Python
Python 内置变量和函数的查看及说明介绍
Dec 25 Python
Python表达式的优先级详解
Feb 18 Python
PyQt5中向单元格添加控件的方法示例
Mar 24 Python
IntelliJ 中配置 Anaconda的过程图解
Jun 01 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
一个SQL管理员的web接口
2006/10/09 PHP
如何取得中文字符串中出现次数最多的子串
2013/08/08 PHP
php实现在服务器端调整图片大小的方法
2015/06/16 PHP
php使用pclzip类实现文件压缩的方法(附pclzip类下载地址)
2016/04/30 PHP
JQuery 解析多维的Json数据格式
2009/11/02 Javascript
JavaScript中的prototype使用说明
2010/04/13 Javascript
基于jQuery+HttpHandler实现图片裁剪效果代码(适用于论坛, SNS)
2011/09/02 Javascript
js工具方法弹出蒙版
2013/05/08 Javascript
纯js和css实现渐变色包括静态渐变和动态渐变
2014/05/29 Javascript
jQuery绑定事件不执行但alert后可以正常执行
2014/06/03 Javascript
封装了一个支持匿名函数的Javascript事件监听器
2014/06/05 Javascript
js实现显示当前状态的导航效果代码
2015/08/28 Javascript
jQuery+AJAX实现遮罩层登录验证界面(附源码)
2020/09/13 Javascript
jquery.serialize() 函数语法及简单实例
2016/07/08 Javascript
深入浅析JavaScript中的Function类型
2016/07/09 Javascript
JS正则表达式学习之贪婪和非贪婪模式实例总结
2016/12/26 Javascript
javaScript+turn.js实现图书翻页效果实例代码
2017/02/16 Javascript
Angular搜索 过滤 批量删除 添加 表单验证功能集锦(实例代码)
2017/10/25 Javascript
js判断数组是否包含某个字符串变量的实例
2017/11/24 Javascript
jQuery+ajax读取json数据并按照价格排序示例
2018/03/28 jQuery
nodejs 递归拷贝、读取目录下所有文件和目录
2019/07/18 NodeJs
Python中创建字典的几种方法总结(推荐)
2017/04/27 Python
python pyinstaller 加载ui路径方法
2019/06/10 Python
python中selenium操作下拉滚动条的几种方法汇总
2019/07/14 Python
pytorch 预训练层的使用方法
2019/08/20 Python
django model的update时auto_now不被更新的原因及解决方式
2020/04/01 Python
python实现贪吃蛇双人大战
2020/04/18 Python
ECCO爱步加拿大官网:北欧丹麦鞋履及皮具品牌
2017/07/08 全球购物
.NET remoting中对象激活的两种方式
2015/06/08 面试题
考试不及格检讨书
2014/01/09 职场文书
车队司机自我鉴定
2014/03/02 职场文书
中学生评语大全
2014/04/18 职场文书
党的群众路线教育实践活动党员个人剖析材料
2014/10/08 职场文书
学籍证明模板
2015/06/18 职场文书
八年级作文之友谊
2019/12/02 职场文书
mysql备份策略的实现(全量备份+增量备份)
2021/07/07 MySQL