Hello Experts,
I’m quite new to torch, so maybe it’s very simple. I’ve trained my model for encoding, which is:
class SAE(nn.Module):
def __init__(self, ):
super(SAE, self).__init__()
self.fc1 = nn.Linear(n_features, 14)
self.fc2 = nn.Linear(14, 10)
self.fc3 = nn.Linear(10, 6)
self.fc4 = nn.Linear(6, 10)
self.fc5 = nn.Linear(10, 14)
self.fc6 = nn.Linear(14, n_features)
self.activation = nn.Sigmoid()
def forward(self, x):
x = self.activation(self.fc1(x))
x = self.activation(self.fc2(x))
x = self.activation(self.fc3(x))
x = self.activation(self.fc4(x))
x = self.activation(self.fc5(x))
x = self.fc6(x)
return x
then I tried to remove first three layers and create new model for decoding (used flattening from the different thread Removing Last Layer causing size mismatch
class Flatten(nn.Module):
def __init__(self):
super(Flatten, self).__init__()
def forward(self, x):
return x.view(x.size(0), -1)
new_model = nn.Sequential(*[Flatten(), *list(model.children())[3:]])
but still getting the size mismatch when trying to input intermediate layer output to the new model
def get_activation(name):
def hook(model, input, output):
activation[name] = output.detach()
return hook
model.fc3.register_forward_hook(get_activation('fc3'))
encoded = model(input)
print(activation['fc3'])