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


Posted in Python onAugust 17, 2019

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 相关文章推荐
Python实现微信公众平台自定义菜单实例
Mar 20 Python
python使用socket向客户端发送数据的方法
Apr 29 Python
深入理解 Python 中的多线程 新手必看
Nov 20 Python
Python模拟三级菜单效果
Sep 11 Python
python ddt实现数据驱动
Mar 14 Python
python如何实现不用装饰器实现登陆器小程序
Dec 14 Python
tensorboard 可以显示graph,却不能显示scalar的解决方式
Feb 15 Python
Python 实现将numpy中的nan和inf,nan替换成对应的均值
Jun 08 Python
Python接口自动化测试的实现
Aug 28 Python
Pytorch之扩充tensor的操作
Mar 04 Python
总结Python变量的相关知识
Jun 28 Python
Python实现数据的序列化操作详解
Jul 07 Python
获取Pytorch中间某一层权重或者特征的例子
Aug 17 #Python
pyenv与virtualenv安装实现python多版本多项目管理
Aug 17 #Python
pytorch 获取层权重,对特定层注入hook, 提取中间层输出的方法
Aug 17 #Python
关于PyTorch源码解读之torchvision.models
Aug 17 #Python
django项目用higcharts统计最近七天文章点击量
Aug 17 #Python
Django对models里的objects的使用详解
Aug 17 #Python
python3.6中@property装饰器的使用方法示例
Aug 17 #Python
You might like
php实现批量下载百度云盘文件例子分享
2014/04/10 PHP
PHP获取IP地址所在地信息的实例(使用纯真IP数据库qqwry.dat)
2016/11/15 PHP
LAMP环境使用Composer安装Laravel的方法
2017/03/25 PHP
php判断/计算闰年的方法小结【三种方法】
2019/07/06 PHP
JS获取当前日期和时间的简单实例
2013/11/19 Javascript
jquery设置按钮停顿3秒不可用
2014/03/07 Javascript
Javascript 拖拽的一些高级的应用(逐行分析代码,让你轻松了拖拽的原理)
2015/01/23 Javascript
javascript生成大小写字母
2015/07/03 Javascript
详解JavaScript操作HTML DOM的基本方式
2015/10/21 Javascript
Web前端新人笔记之jquery入门心得(新手必看)
2016/05/17 Javascript
jquery实现input框获取焦点的简单实例
2017/01/26 Javascript
jquery操作ul的一些操作笔记整理(干货)
2017/08/31 jQuery
Vue2.0 axios前后端登陆拦截器(实例讲解)
2017/10/27 Javascript
详解刷新页面vuex数据不消失和不跳转页面的解决
2018/01/30 Javascript
微信小程序实现点击效果
2019/06/21 Javascript
vue移动端实现手机左右滑动入场动画
2020/06/17 Javascript
toString.call()通用的判断数据类型方法示例
2020/08/28 Javascript
[42:04]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#3Secret VS OG第一局
2016/03/03 DOTA
[58:21]DOTA2亚洲邀请赛 4.3 突围赛 Liquid vs VGJ.T 第二场
2018/04/04 DOTA
[03:15]DOTA2-DPC中国联赛1月22日Recap集锦
2021/03/11 DOTA
Python变量和字符串详解
2017/04/29 Python
python 中if else 语句的作用及示例代码
2018/03/05 Python
python3+PyQt5重新实现QT事件处理程序
2018/04/19 Python
Python之用户输入的实例
2018/06/22 Python
Python OpenCV对本地视频文件进行分帧保存的实例
2019/01/08 Python
PyCharm License Activation激活码失效问题的解决方法(图文详解)
2020/03/12 Python
使用python操作lmdb对数据读取的实例
2020/12/11 Python
10个最常见的HTML5面试题 附答案
2016/06/06 HTML / CSS
J2EE系统只能是基于web
2015/09/08 面试题
管理心得体会
2013/12/28 职场文书
酒店拾金不昧表扬信
2014/01/18 职场文书
留学经费担保书
2014/05/12 职场文书
三月法制宣传月活动总结
2014/07/03 职场文书
客户付款通知书
2015/04/23 职场文书
2016年班主任培训心得体会
2016/01/07 职场文书
创新创业项目计划书该怎样写?
2019/08/13 职场文书