Hello guys,
So I have the following code. My question is is it possible to use nn.Sequential this way?
class CDH(nn.Module):
def __init__(self, depth, growth_rate=12, reduction=.5, bottleneck=True, dropRate=0.0,
before_Trans=True, d1_before = None):
super (CDH, self).__init__ ()
if self.d1_before is None:
self.d1_before = self.Block1_before (self.conv(self.out))
self.d1_after = self.Block1_after (self.out)
self.d2_before = self.Block2_before (self.d1_after.clone ())
self.d2_after = self.Block2_after (self.d1_after)
self.u1_before = self.Block3_before (self.d2_after.clone ())
self.u1_after = self.Block3_after (self.d2_after)
self.u2_before = self.Block4_before (self.u1_after.clone ())
self.u2_after = self.Block4_after (self.u1_after)
#Stack1
self.stack1 = nn.Sequential (self.d1_after, self.d2_before, self.d2_after,
self.u1_before, self.u2_after)
self.d21_before = self.Stack2_1_before (self.u2_after.clone ())
self.d21_after = self.Stack2_1_after (self.u2_after)
self.d22_before = self.Stack2_2_before (self.d21_after.clone ())
self.d22_after = self.Stack2_2_after (self.d21_after)
self.d23_before = self.Stack2_3_before (self.d22_after.clone ())
self.d23_after = self.Stack2_3_after (self.d22_after)
self.d24_before = self.Stack2_4_before (self.d23_before.clone ())
self.d24_after = self.Stack2_4_after (self.d23_before)
#Stack2
self.stack2 = nn.Sequential(self.d21_before, self.d21_after, self.d22_before, self.d22_after, self.d23_before,
self.d23_after, self.d24_before, self.d24_after)
self.conv = nn.Conv2d (...)
self.Block1_before = (....)
'
'
self.Block4_after = (....)
Then having the forward pass this way:
def forward(self, x):
if self.out is None:
self.out = x
self.stack1()
return self.stack2
Is this doable? Or am I doing it wrong? Thank you very much