Hello all,
I have been trying to remove a layer completely from both forward and backward pass while training the model.
Say below is the model.

class Net(nn.Module):
def init(self):
super(Net, self).init()
self.conv1 = nn.Conv2d(1, 10, kernel_size=5)
self.conv2 = nn.Conv2d(10, 20, kernel_size=5)
self.fc1 = nn.Linear(320, 50)
self.fc2 = nn.Linear(50, 10)

def forward(self, x):
    x = F.relu(F.max_pool2d(self.conv1(x), 2))
    x = F.relu(F.max_pool2d(self.conv2(x), 2))
    x = x.view(-1, 320)
    x = F.relu(self.fc1(x))
    x = self.fc2(x)
    return F.log_softmax(x)

Is there any way i can precompute the layer output , load it into a train loader object and use it in future epochs while completely getting rid of training that particular initial layer.
We can use the detach() method in order to prevent backprop but forward pass still computes the forward pass each time even though the weights parameters are fixed which seems redundant. I will really appreciate if there is a hack of any sort that can help make this possible.