Get layer's output from nn.Sequential

Hello. Below is my code sample. I would like to ask how can I do to get the output from second dropout of decoder?

class AutoEncoder(nn.Module):
    
    def __init__(self, encoder_dim, decoder_dim, drops=[0.7, 0.5, 0.5], td_units=100):
        super(AutoEncoder, self).__init__()
        
        self.encoder_dim = encoder_dim
        self.decoder_dim = decoder_dim
        self.td_units = td_units
        self.gru = nn.GRU(encoder_dim, decoder_dim, bidirectional=True)
        self.drop0  = drops[0]
        self.drop1  = drops[1]
        self.r_drop = drops[2]
        #encoder
        self.encoder = nn.Sequential(
            nn.Linear(self.encoder_dim, 3*self.td_units),
            nn.Tanh(),
            nn.Dropout(p = self.drop0),
            nn.Linear(3*self.td_units, 2*self.td_units),
            nn.Tanh(),
            nn.Dropout(p = self.drop0),
            nn.Linear(2*self.td_units, 1*self.td_units),
            nn.Tanh(),
            nn.Dropout(p = self.drop0)
        )
        
        #decoder
        self.decoder = nn.Sequential(
            nn.Linear(self.td_units, 2*self.td_units),
            nn.Tanh(),
            nn.Dropout(p = self.drop0),
            nn.Linear(2*self.td_units, 3*self.td_units),
            nn.Tanh(),
            nn.Dropout(p = self.drop0),
            nn.Linear(3*self.td_units, self.decoder_dim),
            nn.Tanh())

        
    def forward(self,x):
        x = self.encoder(x)
        y = self.decoder(x) 
        return y

Any help is fine. Thanks.

You could use forward hooks as described here.

1 Like

Thank you @ptrblck for your reply.