FoodVision_Mini / model.py
annadurai003
FoodVision Mini Initial commit
4dbe437
raw
history blame contribute delete
940 Bytes
import torch
import torchvision
from torch import nn
def create_effnetb2_model(num_classes:int=3,
seed:int=42):
# 1. Setup pretrained EffNetB2 weights
effnetb2_weights = torchvision.models.EfficientNet_B2_Weights.DEFAULT
# 2. Get EffNetB2 transforms
effnetb2_transforms = effnetb2_weights.transforms()
# 3. Setup pretrained model instance
effnetb2 = torchvision.models.efficientnet_b2(weights=effnetb2_weights)
# Set seeds
torch.manual_seed(seed=seed)
# 4. Freeze the base layer in the model (this will stop all layers form training)
for params in effnetb2.parameters():
params.requires_grad = False
# 5. Chage the output layer (or header layer) classifier
effnetb2.classifier = nn.Sequential(
nn.Dropout(p=0.3, inplace=True),
nn.Linear(in_features=1408,
out_features=num_classes,
bias=True)
)
return effnetb2, effnetb2_transforms