1

(如果我的英语不好,我很抱歉)

如果函数只需要 DNN 输出向量(预测)和 DNN 输出向量(ground truth),我可以在 PyTorch 中创建自己的损失函数。

我想使用其他变量来计算损失。

我制作了如下的训练和测试数据;

DNN 输入:

  1. Data_A-> 处理 1 ->Data_X

DNN 输出:

  1. Data_A-> 处理 1 ->Data_X
  2. Data_B-> 处理 1 ->Data_P
  3. Data_X, Data_P-> 处理 2 ->Data_Y

我分为训练数据和测试数据 Data_XData_Yx_train, x_test, y_train, y_test = train_test_split(Data_X,Data_Y,test_size=0.2, random_state=0)

我想使用Data_AData_BData_Y(predicted)Data_Y(ground truth)来计算损失。我看到了很多只使用Data_Y(predicted)和的自定义损失函数的例子Data_Y(ground truth)。我以前可以使用这种自定义的损失函数。但是,当我想使用其他附加变量时,我不知道该怎么做。有什么好办法吗?谢谢您的帮助!

4

1 回答 1

2

您对损失函数的结构没有任何限制(只要梯度有意义)。
例如,您可以拥有:

class MyLossLayer(nn.Module):
  def __init__(self):
    super(MyLossLayer, self).__init__()

  def forward(self, pred_a, pred_b, gt_target):
    # I'm just guessing here - do whatever you want as long as you do not screw the gradients.
    loss = pred_a * (pred_b - target)
    return loss.mean()
于 2021-01-31T15:17:01.587 回答