【问题标题】:How to add two separate layers on the top of one layer using pytorch?如何使用pytorch在一层之上添加两个单独的层?
【发布时间】:2021-07-03 02:09:17
【问题描述】:

我想在一层(或预训练模型)的顶部添加两个单独的层,我可以使用 Pytorch 吗?

【问题讨论】:

    标签: python machine-learning deep-learning neural-network pytorch


    【解决方案1】:

    是的,在定义模型的 forward 函数时,您可以指定输入应如何通过层。

    例如:

    def forward(self, X):
        X = self.common_layer(X)
        X = self.activation_fn(X)
        Xa = self.layer_a(X)
        Xb = self.layer_b(X)
        # now combine outputs of the parallel layers however you please
        return self.combining_layer(torch.cat([Xa, Xb]))
    

    其中forwardMyNet 的成员:

    class MyNet(nn.Module):
       def __init__(self):
           # define common_layer, activation_fn, layer_a, layer_b, and combining_layer
    

    培训

    应该像任何其他 pytorch 模型一样训练模型。

    因为组合输出通过layer_alayer_b,计算损失梯度将优化两个层的参数。图层将单独优化,因为它们的对象的参数是独立的。

    例如。

    model = MyNet()
    ...
    optimizer.zero_grad()
    predictions = model(input_batch)
    loss = my_loss_fn(predictions, ground_truth)
    loss.backward()
    optimizer.step()
    

    【讨论】:

    • 非常感谢您的回答。但我还有一个问题,如何以不同的方式同时训练它们?
    • @YukiWang 我已经更新了解决培训的答案。
    • @YukiWang 你能确认答案作为解决方案吗?
    • 好的。对不起,我是新来的,我刚刚想出了如何接受答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-22
    • 2020-02-02
    • 1970-01-01
    • 1970-01-01
    • 2019-11-06
    • 1970-01-01
    • 2020-10-28
    相关资源
    最近更新 更多