It seems you’ve defined in_features as 152, which does not match the flattened shape of the input tensor to self.fc1.
If you add print statements right before the self.fc1 call, you can simply check the shape, which will be [batch_size, 228].
If you create the first linear layer as:
self.fc1 = nn.Linear(228, 36)

your code should work.
Also, nn.CrossEntropyLoss expects raw logits, so just remove the softmax at the end of your model and simply return the output of self.fc2.