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 相关文章推荐
Python3.x版本中新的字符串格式化方法
Apr 24 Python
详解Python字符串对象的实现
Dec 24 Python
Python中的字符串操作和编码Unicode详解
Jan 18 Python
Python中标准库OS的常用方法总结大全
Jul 19 Python
在python中只选取列表中某一纵列的方法
Nov 28 Python
python中for循环把字符串或者字典添加到列表的方法
Jul 20 Python
pytorch 使用单个GPU与多个GPU进行训练与测试的方法
Aug 19 Python
使用Python实现将多表分批次从数据库导出到Excel
May 15 Python
Python实现手绘图效果实例分享
Jul 22 Python
Pytorch 扩展Tensor维度、压缩Tensor维度的方法
Sep 09 Python
基于python爬取链家二手房信息代码示例
Oct 21 Python
Python3自带工具2to3.py 转换 Python2.x 代码到Python3的操作
Mar 03 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支持页面回退的两种方法
2008/01/10 PHP
php制作的简单验证码识别代码
2016/01/26 PHP
PHP的Yii框架中移除组件所绑定的行为的方法
2016/03/18 PHP
laravel实现分页样式替换示例代码(增加首、尾页)
2017/09/22 PHP
iframe 自适应高度[在IE6 IE7 FF下测试通过]
2009/04/13 Javascript
Document 对象的常用方法
2009/07/31 Javascript
Confirmer JQuery确认对话框组件
2010/06/09 Javascript
JavaScript中的函数模式详解
2015/02/11 Javascript
JavaScript浏览器对象之一Window对象详解
2016/06/03 Javascript
Bootstrap编写一个同时适用于PC、平板、手机的登陆页面
2016/06/30 Javascript
在JS中a标签加入单击事件屏蔽href跳转页面
2016/12/16 Javascript
AngularJS使用ng-app自动加载bootstrap框架问题分析
2017/01/04 Javascript
微信小程序 slider 详解及实例代码
2017/01/10 Javascript
详解NODEJS基于FFMPEG视频推流测试
2017/11/17 NodeJs
原生JS 实现的input输入时表格过滤操作示例
2019/08/03 Javascript
微信小程序实现3D轮播图效果(非swiper组件)
2019/09/21 Javascript
vue 获取元素额外生成的data-v-xxx操作
2020/09/09 Javascript
Python常见文件操作的函数示例代码
2011/11/15 Python
Python深入学习之内存管理
2014/08/31 Python
详解Django框架中的视图级缓存
2015/07/23 Python
python通过pip更新所有已安装的包实现方法
2017/05/19 Python
PyQt5每天必学之进度条效果
2018/04/19 Python
Python从ZabbixAPI获取信息及实现Zabbix-API 监控的方法
2018/09/17 Python
解决pycharm运行时interpreter为空的问题
2018/10/29 Python
在python中bool函数的取值方法
2018/11/01 Python
django-allauth入门学习和使用详解
2019/07/03 Python
Python环境Pillow( PIL )图像处理工具使用解析
2019/09/12 Python
python处理document文档保留原样式
2019/09/23 Python
宝塔面板成功部署Django项目流程(图文)
2020/06/22 Python
python进度条显示-tqmd模块的实现示例
2020/08/23 Python
Waterford英国官方网站:世界上最受欢迎的优质水晶品牌
2019/08/17 全球购物
党员自我评价2015
2015/03/03 职场文书
javascript拖曳互换div的位置实现示例
2021/06/28 Javascript
MySQL中datetime时间字段的四舍五入操作
2021/10/05 MySQL
一文了解MySQL二级索引的查询过程
2022/02/24 MySQL
baselines示例程序train_cartpole.py的ImportError
2022/05/20 Python