Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 向PyTorch中的训练数据添加自定义权重_Python_Machine Learning_Deep Learning_Pytorch - Fatal编程技术网

Python 向PyTorch中的训练数据添加自定义权重

Python 向PyTorch中的训练数据添加自定义权重,python,machine-learning,deep-learning,pytorch,Python,Machine Learning,Deep Learning,Pytorch,是否可以向PyTorch中的训练实例添加自定义权重?更明确地说,我想为数据集中的每一行添加一个自定义权重。默认情况下,权重为1,这意味着每个数据对我的模型都同等重要。损失函数支持类权重而不是样本权重。对于示例权重,您可以执行以下操作(内联注释): 你可以看看torch.nn.init。您可以执行torch.nn.init(layer.weight,a)。我不知道你是不是这个意思though@DwightFoster这似乎是关于初始化模型权重的。很遗憾,没有关系。你是什么意思?如果要惩罚损失函数,

是否可以向PyTorch中的训练实例添加自定义权重?更明确地说,我想为数据集中的每一行添加一个自定义权重。默认情况下,权重为1,这意味着每个数据对我的模型都同等重要。

损失函数支持类权重而不是样本权重。对于示例权重,您可以执行以下操作(内联注释):


你可以看看torch.nn.init。您可以执行
torch.nn.init(layer.weight,a)
。我不知道你是不是这个意思though@DwightFoster这似乎是关于初始化模型权重的。很遗憾,没有关系。你是什么意思?如果要惩罚损失函数,可以在此处直接指定权重@JohnStud乘以损失函数将产生与加权实例相同的效果,因此这应该是可行的。然而,我不能通过修改我的训练数据集来完成这项工作,而不是为每次训练指定权重吗?你能编辑你的问题并使其更明确地说明你想要的结果吗?这看起来是合乎逻辑的。谢谢!
import torch

x = torch.rand(8, 4)
# Ground truth
y = torch.randint(2, (8,))
# Weights per sample 
weights = torch.rand(8, 1) 

# Add weights as a columns, so that it will be passed trough
# dataloaders in case you want to use one
x = torch.cat((x, weights), dim=1)

model = torch.nn.Linear(4, 2)

loss_fn = torch.nn.CrossEntropyLoss(reduction='none')
def weighted_loss(y, y_hat, w):
  return (loss_fn(y, y_hat)*w).mean()

loss = weighted_loss(model(x[:, :-1]), y, x[:, -1])
print (loss)