When you add the Linear layers by appending them to the list self.fcls they are not registered with the model. Therefore they don’t get trained. Use the following to ensure they are properly registered.
self.fcls = nn.ModuleList()
for i, num_hunits in enumerate(num_hidden_units_rec):
     fcl = nn.Linear(input_size_rec[i], num_hunits)
     self.fcls.append(fcl)
self.class_layer = nn.Linear(num_hidden_units_rec[-1], num_class)

alternatively you could register them manually using self.add_module("fcl"+str(i), fcl).
Either method will ensure that those layers get properly trained.