@Shani_Gamrian Your approach looks fine. What kind of error message do you get?
I tried to re-implement a simplified version of your approach (I just dropped some layers):
class PretrainedNet(torch.nn.Module): #original model
    def __init__(self, num_inputs, num_outputs):
        super(PretrainedNet, self).__init__()
        self.conv1 = nn.Conv2d(num_inputs, 32, kernel_size=3, stride=1, padding=1)
        self.out = nn.Linear(10*10*32, num_outputs)

    def forward(self, x):
        x = F.elu(self.conv1(x))
        x = x.view(-1, 10*10*32)
        x = self.out(x)
        return x

class NewModel(torch.nn.Module): #new model
    def __init__(self, pretrained_model, num_inputs, shape_pretrain):
        super(NewModel, self).__init__()
        self.num_inputs = num_inputs
        self.shape_pretrain = shape_pretrain
        self.new_layer = nn.Linear(self.num_inputs, np.prod(self.shape_pretrain))
        self.pretrained_model = pretrained_model

    def forward(self, x):
        x = F.elu(self.new_layer(x.view(-1, self.num_inputs)))
        return self.pretrained_model.forward(x.view(*self.shape_pretrain))
    
    
# Generate random input
batch_size = 1
W = 10
H = 10
channels = 3
data = Variable(torch.FloatTensor(batch_size, channels, H, W).normal_())

# Create pretrained net
pretrained_net = PretrainedNet(num_inputs=channels, num_outputs=1)
pretrained_net(data)

# Create new net
shape_pretrain = np.array([batch_size, channels, H, W])
new_net = NewModel(pretrained_model=pretrained_net,
                   num_inputs=np.prod(shape_pretrain),
                   shape_pretrain=shape_pretrain)

# Test
new_net(data)

This test case seems to work. I assume the error might be somewhere related to the LSTM etc.
I hope this short example is helpful for you.