keras中sample_weight的使用

百度了好久,没有找到与sample_weight相关的博客,于是自己摸索一下。
sample_weight是keras中的fit的参数,中文文档介绍如下:
keras中sample_weight的使用_第1张图片
简单点的解释如下:参考https://blog.csdn.net/weixin_40755306/article/details/82290033#commentBox

在这里插入图片描述
sample_weight的作用就是为数据集中的数据分配不同的权重。

我的例子是要将数据集的数据分为三类,用0,1,2代表这三类,我这里想为0分配权重0.3,为1分配权重1,为2分配权重2.。
我的数据是存储在csv文件中的,我提取出标签列表,标签列表的内容是0,1,2的集合,列表名称为y_train。我用下面代码生成一个权重的列表:

sample_weights=[]
for sw in range(len(y_train)):
    if y_train[sw]==0:
            sample_weights.append(0.3)
    if y_train[sw]==1:
            sample_weights.append(1)
    if y_train[sw]==2:
            sample_weights.append(2)
sample_weights=np.array(sample_weights)

当标签为0时, sample_weights添加0.3,当标签为1时, sample_weights添加1,当标签为2时, sample_weights添加2。
这里记得不要漏了最后一行,将列表转化为numpy数组。因为sample_weight只能是numpy数组。
创建好数组之后,下一步是要在compile中添加一个参数,先看看是添加哪个参数:
在这里插入图片描述
这里的sample_weight_mode分为两种形式,如果你的权重形式是像我这样的,就是1D,那sample_weight_mode就设置为None。2D的形式还没试过,但如果用2D形式,那sample_weight_mode就要设置为sample_weight_mode=‘temporal’ 。

compile设置完就要设置fit了,我的模型有两个输出,但是我只想设置分类输出,我这里的分类输出层命名为’classifier’。那就在fit中添加一个参数:

sample_weight={'classifier' : sample_weights}

sample_weights是我们上面定义的数组。

这样便可简单实现对数据的加权。

你可能感兴趣的:(机器学习,深度学习)