如何使用中间层的输出定义损耗函数?

时间:2020-10-12 11:20:11

标签: python deep-learning pytorch

class Model(nn.Module):
def __init__(self):
    super(Model, self).__init__()
    self.encoder = nn.Linear(300, 100)
    self.dense1 = nn.Sequential(nn.Linear(100, 10),nn.ReLU())
    self.dense2 = nn.Sequential(nn.Linear(10, 5),nn.ReLU())
    self.dense3 = nn.Sequential(nn.Linear(5, 1))
def forward(self, x):
    x = self.encoder(x)
    x = self.dense1(x)
    x = self.dense2(x)
    x = self.dense3(x)
    return x

我正在研究回归问题,我需要使用density2层的输出来计算损失。

致密2层的输出为5维(5x1)。

我正在使用PyTorch。

数据集:假设我正在使用300个功能,并且我需要预测一些分数(一个浮动值)。 输入:300个功能 输出:一些浮动值

1 个答案:

答案 0 :(得分:2)

通常,您的nn.Module可以返回任意多个元素。此外,您不必在任何地方使用它们-没有机制可以对其进行检查。 Pytorch的哲学是在运行中计算计算图。

class Model(nn.Module):
def __init__(self):
    super(Model, self).__init__()
    self.encoder = nn.Linear(300, 100)
    self.dense1 = nn.Sequential(nn.Linear(100, 10),nn.ReLU())
    self.dense2 = nn.Sequential(nn.Linear(10, 5),nn.ReLU())
    self.dense3 = nn.Sequential(nn.Linear(5, 1))

def forward(self, x):
    enc_output = self.encoder(x)
    dense1_output = self.dense1(enc_output)
    dense2_output = self.dense2(dense1_output)
    dense3_output = self.dense3(dense2_output)
    return dense3_output, dense2_output