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
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
python中asyncio异步编程学习
innerHTML 引发“未知的运行时错误”
解决Scrapy安装错误:Microsoft Visual C++ 14.0 is required...
從無到有實現一個xml數據庫登錄驗証
SQL中JOIN和UNION区别、用法及示例介绍
公用样式模板的设计制作
![](https://img.aspxhome.com/file/UploadPic/20099/13/sys1-12s.jpg)
DreamWeaver制作会移动的广告条
[翻译]标记语言和样式手册 Chapter 14 图片替换
![](https://img.aspxhome.com/file/UploadPic/20082/18/2008218132218368s.jpg)
python实现大转盘抽奖效果
![](https://img.aspxhome.com/file/2023/1/72081_0s.jpg)
网页上的广告条设计思考
JavaScript的私有成员
深入php var_dump()函数的详解
MySQL数据库锁机制的相关原理简介
python 列表降维的实例讲解
IE和Firefox的js兼容性整理
胜过语言的图形符号
![](https://img.aspxhome.com/file/UploadPic/20095/6/2009-05-03_001747-150x137-79s.png)
python下如何查询CS反恐精英的服务器信息
基于Python中单例模式的几种实现方式及优化详解
Go语言生成随机数的方法
Python数据可视化之环形图
![](https://img.aspxhome.com/file/2023/5/76905_0s.png)