【发布时间】:2021-05-04 20:53:02
【问题描述】:
(如果我的英语不好,我很抱歉)
如果函数只需要 DNN 输出向量(预测)和 DNN 输出向量(ground truth),我可以在 PyTorch 中创建自己的损失函数。
我想使用额外的变量来计算损失。
我的训练和测试数据如下所示;
DNN 输入:
-
Data_A-> 处理 1 ->Data_X
DNN 输出:
-
Data_A-> 处理 1 ->Data_X -
Data_B-> 处理 1 ->Data_P -
Data_X,Data_P-> 处理 2 ->Data_Y
我将Data_X 和Data_Y 分为训练数据和测试数据。
x_train, x_test, y_train, y_test = train_test_split(Data_X,Data_Y,test_size=0.2, random_state=0)
我想用Data_A、Data_B、Data_Y(predicted)和Data_Y(ground truth)来计算损失。
我看到了很多只使用Data_Y(predicted) 和Data_Y(ground truth) 的自定义损失函数的例子。我以前可以使用这种自定义的损失函数。
但是,当我想使用其他附加变量时,我不知道该怎么做。
有什么好办法吗?感谢您的帮助!
【问题讨论】:
-
您的命名有点混乱,您的问题似乎很广泛:您有两个模型并使用第一个模型的输出来提供第二个模型。您想根据来自
Data_A和Data_B的输入、模型的输出和基本事实来计算损失(什么损失?)。你可以实现这样的功能,是的。但是,如果没有更多细节,就很难提供帮助。 -
感谢您的评论!我明白了,我会展示更多细节。
Data_A和Data_B是复向量。Processing 1是torch.abs()。因此Data_X = torch.abs(Data_A)和Data_P = torch.abs(Data_B)。Processing 2由torch.pow()和torch.div()组成。详细点,Data_Y = torch.div(torch.pow(torch.abs(Data_A),2), torch.pow(torch.abs(Data_B),2)。 DNN 输入为Data_X。 DNN 输出为Data_Y。我想通过torch.mean(torch.pow(Data_Y * Data_A - Data_B ,2))来计算损失。 -
只要您使用 PyTorch 运算符就可以了,请参阅下面 Shai 的回答以创建自定义损失函数。
-
好的。我尝试创建一个自定义函数。谢谢你的帮助!!
标签: python-3.x pytorch loss-function dnn9