【问题标题】:How forward() method is used when it have more than one two input parameters in pytorchpytorch中输入参数多于1个时如何使用forward()方法
【发布时间】:2020-06-13 06:31:35
【问题描述】:

有人能告诉我forward() 方法中多个参数背后的概念吗? 一般forward()方法的实现有两个参数

  1. 自我
  2. 输入

如果 forward 方法的参数多于这些参数,PyTorch 将如何使用 forward 方法。

让我们考虑一下这个代码库: https://github.com/bamps53/kaggle-autonomous-driving2019/blob/master/models/centernet.py 这里在线 236 位作者使用了带有两个参数的 forward 方法:

  1. 中心
  2. return_embeddings

我找不到一篇文章可以回答我关于第 254(return_embeddings:) 行和第 257(if centers is not None:) 行将执行什么条件的问题。据我所知,该方法由 nn 模块在内部调用。有人可以给它加点灯吗?

【问题讨论】:

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


    【解决方案1】:

    您设置的转发功能。这意味着您可以根据需要添加更多参数。例如,您可以添加如下所示的输入

    def forward(self, input1, input2,input3):
        x = self.layer1(input1)
        y = self.layer2(input2)
        z = self.layer3(input3)
    
        net = torch.cat((x,y,z),1)
    
        return net
    

    您必须在为网络提供数据的同时控制您的参数。层不能超过一个参数。因此,您需要从输入中一一提取特征并与torch.cat((x,y),1)(维度为1)连接。

    【讨论】:

    • 如果我们可以设置自己的参数,而不是 Pytorch 在调用 forward 函数时需要哪些输入参数?是在训练的时候吗?正如我所问的,我需要澄清何时调用这两个条件?
    • 首先也是最重要的,在建网时设置的转发功能。通常网络函数称为 output = model(input) 。但是,当您有多个输入网络时,output = model(input1,input2)。它直接连接到您的网络实施。如果要使用多个参数的网络,则必须定义自己的网络。
    • 所以这意味着 input1 和 input2 都是不同的输入,当我们训练这个网络时,它应该有“数据输入数”等于“forward() 函数中的参数数。我正确吗?
    • 那么从为什么return_embeddings=False的默认值呢?它应该是我在 Keras 中从未见过的一些输入,也有人给出二进制值(不像二进制值的张量只是一个二进制值。)
    猜你喜欢
    • 2020-06-14
    • 1970-01-01
    • 2020-10-08
    • 2020-01-23
    • 1970-01-01
    • 2022-01-09
    • 2017-11-06
    • 1970-01-01
    • 2011-09-29
    相关资源
    最近更新 更多