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

作者:小北小白 时间:2021-09-17 06:23:18 

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]
)

来源:https://blog.csdn.net/weixin_40755306/article/details/82290033

标签:keras,模型训练,class,sample,weight
0
投稿

猜你喜欢

  • python中asyncio异步编程学习

    2022-10-20 06:19:37
  • innerHTML 引发“未知的运行时错误”

    2008-04-09 13:06:00
  • 解决Scrapy安装错误:Microsoft Visual C++ 14.0 is required...

    2023-03-06 19:48:57
  • 從無到有實現一個xml數據庫登錄驗証

    2008-09-05 17:12:00
  • SQL中JOIN和UNION区别、用法及示例介绍

    2012-08-21 10:47:22
  • 公用样式模板的设计制作

    2009-09-13 21:27:00
  • DreamWeaver制作会移动的广告条

    2008-02-03 11:34:00
  • [翻译]标记语言和样式手册 Chapter 14 图片替换

    2008-02-18 12:56:00
  • python实现大转盘抽奖效果

    2023-12-16 13:50:30
  • 网页上的广告条设计思考

    2008-06-29 14:16:00
  • JavaScript的私有成员

    2009-03-25 20:45:00
  • 深入php var_dump()函数的详解

    2023-11-08 16:09:01
  • MySQL数据库锁机制的相关原理简介

    2010-04-22 15:34:00
  • python 列表降维的实例讲解

    2023-08-28 16:44:54
  • IE和Firefox的js兼容性整理

    2007-11-21 19:40:00
  • 胜过语言的图形符号

    2009-05-06 12:43:00
  • python下如何查询CS反恐精英的服务器信息

    2021-09-15 05:51:47
  • 基于Python中单例模式的几种实现方式及优化详解

    2022-10-24 14:20:45
  • Go语言生成随机数的方法

    2023-08-28 20:11:10
  • Python数据可视化之环形图

    2022-03-26 04:24:12
  • asp之家 网络编程 m.aspxhome.com