在Pytorch中使用样本权重(sample_weight)的正确方法

 更新时间:2019年08月17日 11:22:22   作者:dlchang_chang  
今天小编就为大家分享一篇在Pytorch中使用样本权重(sample_weight)的正确方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

step:

1.将标签转换为one-hot形式。

2.将每一个one-hot标签中的1改为预设样本权重的值

即可在Pytorch中使用样本权重。

eg:

对于单个样本:loss = - Q * log(P),如下:

P = [0.1,0.2,0.4,0.3]
Q = [0,0,1,0]
loss = -Q * np.log(P)

增加样本权重则为loss = - Q * log(P) *sample_weight

P = [0.1,0.2,0.4,0.3]
Q = [0,0,sample_weight,0]
loss_samle_weight = -Q * np.log(P)

在pytorch中示例程序

train_data = np.load(open('train_data.npy','rb'))
train_labels = []
for i in range(8):
  train_labels += [i] *100
train_labels = np.array(train_labels)
train_labels = to_categorical(train_labels).astype("float32")
sample_1 = [random.random() for i in range(len(train_data))]
for i in range(len(train_data)):
  floor = i / 100
  train_labels[i][floor] = sample_1[i]
train_data = torch.from_numpy(train_data) 
train_labels = torch.from_numpy(train_labels) 
dataset = dataf.TensorDataset(train_data,train_labels) 
trainloader = dataf.DataLoader(dataset, batch_size=batch_size, shuffle=True)

对应one-target的多分类交叉熵损失函数如下:

def my_loss(outputs, targets):
  
  output2 = outputs - torch.max(outputs, 1, True)[0]
 
 
  P = torch.exp(output2) / torch.sum(torch.exp(output2), 1,True) + 1e-10
 
 
  loss = -torch.mean(targets * torch.log(P))
 
 
  return loss

以上这篇在Pytorch中使用样本权重(sample_weight)的正确方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • python shell根据ip获取主机名代码示例

    python shell根据ip获取主机名代码示例

    这篇文章主要介绍了python shell根据ip获取主机名代码示例,涉及用socket模块和shell中hostname命令获取等相关内容,具有一定参考价值,需要的朋友可以了解下。
    2017-11-11
  • Python排序算法实例代码

    Python排序算法实例代码

    这篇文章主要为大家详细介绍了Python实现排序算法的相关代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • Python做文本按行去重的实现方法

    Python做文本按行去重的实现方法

    每行在promotion后面包含一些数字,如果这些数字是相同的,则认为是相同的行,对于相同的行,只保留一行。接下来通过本文给大家介绍Python做文本按行去重的实现方法,感兴趣的朋友一起看看吧
    2016-10-10
  • 解决python3报错之takes 1 positional argument but 2 were given问题

    解决python3报错之takes 1 positional argument but 2 were gi

    这篇文章主要介绍了解决python3报错之takes 1 positional argument but 2 were given问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-03-03
  • Python浮点数四舍五入问题的分析与解决方法

    Python浮点数四舍五入问题的分析与解决方法

    这篇文章主要给大家介绍了关于Python中浮点数四舍五入问题的分析与解决方法,文中通过示例代码介绍的非常详细,对大家学习或者使用Python具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-11-11
  • python多进程实现数据共享的示例代码

    python多进程实现数据共享的示例代码

    本文介绍了Python中多进程实现数据共享的方法,包括使用multiprocessing模块和manager模块这两种方法,具有一定的参考价值,感兴趣的可以了解一下
    2025-01-01
  • 使用Python创建多功能文件管理器的代码示例

    使用Python创建多功能文件管理器的代码示例

    在本文中,我们将探索一个使用Python的wxPython库开发的文件管理器应用程序,这个应用程序不仅能够浏览和选择文件,还支持文件预览、压缩、图片转换以及生成PPT演示文稿的功能,需要的朋友可以参考下
    2024-08-08
  • 在PyCharm中实现添加快捷模块

    在PyCharm中实现添加快捷模块

    今天小编就为大家分享一篇在PyCharm中实现添加快捷模块,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • Pytorch之8层神经网络实现Cifar-10图像分类验证集准确率94.71%

    Pytorch之8层神经网络实现Cifar-10图像分类验证集准确率94.71%

    这篇文章主要介绍了Pytorch之8层神经网络实现Cifar-10图像分类验证集准确率94.71%问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • 深入浅析Python2.x和3.x版本的主要区别

    深入浅析Python2.x和3.x版本的主要区别

    这篇文章主要介绍了Python2.x和3.x版本的主要区别,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-11-11

最新评论