keras中模型训练class_weight,sample_weight区别说明

 更新时间:2020年05月23日 12:57:29   作者:小北小白  
这篇文章主要介绍了keras中模型训练class_weight,sample_weight区别说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

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区别说明就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 利用Seaborn绘制20个精美的pairplot图

    利用Seaborn绘制20个精美的pairplot图

    本文记录的使用seaborn绘制pairplot图,主要是用来显示两两变量之间的关系(线性或非线性,有无较为明显的相关关系等),感兴趣的可以了解一下
    2022-07-07
  • python str转json的具体步骤

    python str转json的具体步骤

    使用Python内置的json模块,可以将str转换为JSON,本文给大家介绍python str转json的具体步骤,文中补充介绍了Python-字符串str和json格式的转换问题,感兴趣的朋友一起看看吧
    2024-01-01
  • Python3爬虫里关于代理的设置总结

    Python3爬虫里关于代理的设置总结

    在本篇文章里小编给大家整理的是一篇关于Python3爬虫里关于代理的设置总结,需要的朋友们可以参考下。
    2020-07-07
  • flask的orm框架SQLAlchemy查询实现解析

    flask的orm框架SQLAlchemy查询实现解析

    这篇文章主要介绍了flask的orm框架SQLAlchemy查询实现解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • Python基础教程之异常处理详解

    Python基础教程之异常处理详解

    Python的异常处理能力是很强大的,它有很多内置异常,可向用户准确反馈出错信息,下面这篇文章主要给大家介绍了关于Python基础教程之异常处理的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-04-04
  • 浅析Python中的缩进错误

    浅析Python中的缩进错误

    在编程中,我们经常会遇到错误,缩进错误是 Python 中最常见的错误之一,它会使我们的代码难以理解,并且难以调试,下面小编就来和大家简单聊聊Python中的缩进错误吧
    2023-10-10
  • Python使用keras和tensorflow遇到的问题及解决

    Python使用keras和tensorflow遇到的问题及解决

    这篇文章主要介绍了Python使用keras和tensorflow遇到的问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-03-03
  • python爬取代理IP并进行有效的IP测试实现

    python爬取代理IP并进行有效的IP测试实现

    这篇文章主要介绍了python爬取代理IP并进行有效的IP测试实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • 利用Python实现眨眼计数器的示例代码

    利用Python实现眨眼计数器的示例代码

    这篇文章主要介绍了如何使用Python语言实现对视频中的人物的眨眼进行计数并描绘在图表中,文中的实现步骤讲解详细,感兴趣的可以动手试一试
    2022-02-02
  • 基于python 取余问题(%)详解

    基于python 取余问题(%)详解

    这篇文章主要介绍了基于python 取余问题(%)详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06

最新评论