简体   繁体   中英

how to prevent overfitting/underfitting while using EfficientNet

i'm new in python so for my college final project, i use EfficientNet for the ripeness palm oil into 4 classification. i've total 5852 train data (1463 each) , and 132 test data (33 each). i used code from the internet. but the result is far from good. i already add layers.dropout to prevent / avoid underfitting. and i also use imagenet to do the transfer learning. is there any solution to improve the result?

Edit: i already change my code from conv_base.trainable = False to conv_base.trainable = True. But i think the result still not good

here's my full code: https://drive.google.com/file/d/1OeiSA23xmF5ceq19aqc1l20mlT3Uxocs/view?usp=sharing

and here's my result

模型精度

模型损失

To my opinion 5852 samples for training Efficientnet is far from enough. You also don't have enough data for validation. I train Efficientnet on more than million samples and still it tends to overfit. My advice to you is to try a simpler CNN architecture (you can start with simple LeNet and try to add layers). If you prefer the transfer learning method try to work with BiT model ( https://ai.googleblog.com/2020/05/open-sourcing-bit-exploring-large-scale.html ) it will give you better results.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM