首页 > 解决方案 > 定制的 NN 层,每个层都有自己的前向函数 PyTorch

问题描述

我想使用具有不同自定义层的 PyTorch 创建一个 NN。我的意思是:

我想要以这种方式制作几层,每一层都有自己的转发功能,因为我有不同行为的特定需求。

class myCustomLayer1(nn.Module):
    def __init__(self):
       super().__init__()
       self.layer = nn.Linear(1,2)
     
    def forward(self, input):
        #do something
        return output

所以这个结构被复制了:

class myCustomLayer2(nn.Module):
    def __init__(self):
       super().__init__()
       self.layer = #another different type of layer
     
    def forward(self, input):
        #do something
        return output

等等。问题是:当我为所有这些层定义容器时会发生什么?我想要类似的东西

class myNN(nn.Module):
       def __init__(self):
           super().__init__()         
           self.layer1 = myCustomLayer1()
           self.layer2 = myCustomLayer2()
           ...
       def forward(self, input):
           ##here code from forward functions of different layers is called

model = myNN(input)

哪里input是适当的形状。__call__我知道在方法中调用了 forward 函数。所以我想知道是否有一种方法可以将多个转发功能组合在一起。我希望我很清楚。谢谢大家

标签: neural-networkpytorch

解决方案


推荐阅读