gpt4 book ai didi

backpropagation - pytorch 中的神经网络预测两个二进制变量

转载 作者:行者123 更新时间:2023-12-04 07:21:09 26 4
gpt4 key购买 nike

假设我想拥有通用的神经网络架构:

                     ---> BinaryOutput_A
/
Input --> nnLayer -
\
---> BinaryOutput_B

输入通过神经网络层,然后预测两个二进制变量(即 A[0 or 1]B[0 or 1]

在 pytorch 中,您可以使用以下方法制作这样的网络:
class NN(nn.Module):

def __init__(self, inputs):
super(NN, self).__init__()

# -- first layer
self.lin = nn.Linear(inputs,10)

# -- firstLayer --> binaryOutputA
self.l2a = nn.Linear(10,2)

# -- firstLayer --> binaryOutputB
self.l2b = nn.Linear(10,2)

def forward(self, inputs):
o = self.lin(inputs)
o1 = F.log_softmax(self.l2a(o))
o2 = F.log_softmax(self.l2b(o))
return o1, o2

在我的 train函数,我用 loss = loss_function(output, target) 计算损失.如果是这种情况,正确地将损失反向传播到 l2al2b层使用 loss.backward() ,我可以简单地 concat target带有 l2a 的正确标签和 l2b ?从这个意义上说,输出将是 [outputPredictionA, outputPredictionB]我可以将目标设为 [labelA, labelB] , pytorch 会知道正确地将损失分配给每一层吗?

最佳答案

事实证明,torch 实际上非常聪明,您可以将总损失计算为:

loss = 0
loss += loss_function(pred_A, label_A)
loss += loss_function(pred_B, label_B)

loss.backward()

并且错误将通过网络正确地反向传播。没有 torch.cat()需要什么的。

关于backpropagation - pytorch 中的神经网络预测两个二进制变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47016302/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com