As a beginner in neural networks, I'm currently working on a project for predicting winning fighters in MMA matches. I understand that this is a complex task due to the nature of the sport.

Currently, I'm achieving an accuracy of 64.2% on my test dataset. My goal is to increase this accuracy to 70%.

The method I'm using involves a fully connected neural network with the following layers to achieve this score:

self.fc = nn.Sequential(
   nn.Linear(70, 90),
   nn.Linear(90, 110),
   nn.Linear(110, 70),
   nn.Linear(70, 50),
   nn.Linear(50, 1),

I'm only training for 5 epochs because I've noticed that if I train for more, the model starts overfitting.

One of my main challenges is the limited amount of data I have, which totals 7855 samples. I split this into 80% for training and 20% for testing.

It's worth mentioning that there are 70 inputs because each fighter has 35 statistics. Additionally, I'm uncertain whether it's better to have a single output where the network predicts the winning fighter, or two outputs where the network outputs the probabilities of each fighter winning.

I believe I'm facing a significant data scarcity issue.

I was wondering if there are techniques available for generating synthetic data (similar to using color filters or altering regions in image data) since I have such a small dataset.

I'm open to any ideas or advice!


1 Answer 1


You should consider putting RelU after every Linear layer (except the output layer). Chaining multiple linear layers without an activation like that is equivalent to a single linear layer, but you're restricting the rank of that layer.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.