Computer vision 逐像素回归。如何从Nx1xHxW转到Nx3xHxW?

Computer vision 逐像素回归。如何从Nx1xHxW转到Nx3xHxW?,computer-vision,pytorch,convolution,Computer Vision,Pytorch,Convolution,我有一个Nx1xHxW功能图。我需要添加第二个磁头,该磁头生成Nx3xHxW,表示像素回归,每个像素有一个三元组 问题是:您将如何从Nx1xHxW过渡到Nx3xHxW?就引入的参数而言,完全连接的层将过于昂贵 这就是我正在尝试的1x1x3卷积滤波器,在PyTorch中,步长1定义为nn.Conv2d(1,3,(1,1),步长=1,偏差=True),但结果似乎并不令人鼓舞。欢迎提出任何建议 最好您可以使用非参数化操作在正向函数中的任意点扩展数据的尺寸,以强制输出为该形状。例如: def forwa

我有一个Nx1xHxW功能图。我需要添加第二个磁头,该磁头生成Nx3xHxW,表示像素回归,每个像素有一个三元组

问题是:您将如何从Nx1xHxW过渡到Nx3xHxW?就引入的参数而言,完全连接的层将过于昂贵

这就是我正在尝试的1x1x3卷积滤波器,在PyTorch中,步长1定义为nn.Conv2d(1,3,(1,1),步长=1,偏差=True),但结果似乎并不令人鼓舞。欢迎提出任何建议


最好

您可以使用非参数化操作在正向函数中的任意点扩展数据的尺寸,以强制输出为该形状。例如:

def forward(input):
       input = input.repeat(1,3,1,1)
       output = self.layers(input)

       return output
或:


从理论上讲,在给定一维输入的情况下,有一些非线性函数可以产生三维像素输出。您可以尝试使用一系列NN层来学习此非线性函数,但是,正如上面所述,这可能不会产生很好的结果,而且可能很难学好。相反,您可以简单地在某个点展开输入,这样您就可以学习具有NN层的三维到三维像素非线性函数<代码>火炬。重复和其他类似的操作是可区分的,因此不应引起学习问题。

这是否回答了您的问题?
def forward(input):
    intermediate = self.layers(input)
    intermediate.repeat(1,3,1,1)
    output = self.more_layers(intermediate)
    
    return output