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中的__builtins__内建对象
Jun 21 Python
使用Python读写及压缩和解压缩文件的示例
Jul 08 Python
python决策树之CART分类回归树详解
Dec 20 Python
Python实现的逻辑回归算法示例【附测试csv文件下载】
Dec 28 Python
基于python进行抽样分布描述及实践详解
Sep 02 Python
python进行OpenCV实战之画图(直线、矩形、圆形)
Aug 27 Python
详解python中的异常捕获
Dec 15 Python
python实现简单的井字棋游戏(gui界面)
Jan 22 Python
Python爬虫实现selenium处理iframe作用域问题
Jan 27 Python
使用Python制作一个数据预处理小工具(多种操作一键完成)
Feb 07 Python
Python语言内置数据类型
Feb 24 Python
Python测试框架pytest高阶用法全面详解
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
php 面试碰到过的问题 在此做下记录
2011/06/09 PHP
php中explode与split的区别介绍
2012/10/03 PHP
php使用递归函数实现数字累加的方法
2015/03/16 PHP
深入php内核之php in array
2015/11/10 PHP
Zend Framework动作助手FlashMessenger用法详解
2016/03/05 PHP
如何让div span等元素能响应键盘事件操作指南
2012/11/13 Javascript
javascript date格式化示例
2013/09/25 Javascript
JS中getYear()和getFullYear()区别分析
2014/07/04 Javascript
jQuery中last()方法用法实例
2015/01/06 Javascript
jquery动态增加删减表格行特效
2015/11/20 Javascript
Javascript字符串常用方法详解
2016/07/21 Javascript
jQuery 的 ready()的纯js替代方法
2016/11/20 Javascript
webpack2.0配置postcss-loader的方法
2017/08/17 Javascript
jQuery 防止相同的事件快速重复触发方法
2018/02/08 jQuery
Vue开发Html5微信公众号的步骤
2019/04/11 Javascript
Python中的进程分支fork和exec详解
2015/04/11 Python
Django发送html邮件的方法
2015/05/26 Python
Django中login_required装饰器的深入介绍
2017/11/24 Python
python2.7 json 转换日期的处理的示例
2018/03/07 Python
Pyqt5如何让QMessageBox按钮显示中文示例代码
2019/04/11 Python
解决Python对齐文本字符串问题
2019/08/28 Python
python logging添加filter教程
2019/12/24 Python
python enumerate内置函数用法总结
2020/01/07 Python
Python搭建Keras CNN模型破解网站验证码的实现
2020/04/07 Python
树莓派4B安装Tensorflow的方法步骤
2020/07/16 Python
python 实现图片批量压缩的示例
2020/12/18 Python
CSS3教程(2):网页边框半径和网页圆角
2009/04/02 HTML / CSS
html5构建触屏网站之网站尺寸探讨
2013/01/07 HTML / CSS
印度最好的在线药品订购网站:PharmEasy
2018/11/30 全球购物
校本教研工作方案
2014/01/14 职场文书
先进集体获奖感言
2014/02/13 职场文书
信息学院毕业生自荐信范文
2014/03/04 职场文书
租房协议书范本
2014/04/09 职场文书
大学生自荐材料范文
2014/12/30 职场文书
python用字节处理文件实例讲解
2021/04/13 Python
vue报错function () { [native code] },无法出现我们想要的内容 Unknown custom element
2022/04/11 Vue.js