Model Training
In [ ]:
Copied!
import os
import sys
import warnings
from pathlib import Path
warnings.filterwarnings("ignore")
os.chdir("../../")
# sys.path.append()
import os
import sys
import warnings
from pathlib import Path
warnings.filterwarnings("ignore")
os.chdir("../../")
# sys.path.append()
In [ ]:
Copied!
from gradsflow.data.image import image_dataset_from_directory
from gradsflow.core.data import AutoDataset
from gradsflow import Model
import timm
import torch
import torchvision
from gradsflow.data.image import image_dataset_from_directory
from gradsflow.core.data import AutoDataset
from gradsflow import Model
import timm
import torch
import torchvision
In [ ]:
Copied!
data_dir = "/Users/aniket/personal/gradsflow/gradsflow/data" # replace with your filepath
data_dir = "/Users/aniket/personal/gradsflow/gradsflow/data" # replace with your filepath
In [ ]:
Copied!
train_data = image_dataset_from_directory(
f"{data_dir}/hymenoptera_data/train/",
image_size=(96, 96),
num_workers=None,
transform=True,
batch_size=1,
shuffle=True,
)
val_data = image_dataset_from_directory(
f"{data_dir}/hymenoptera_data/val/",
image_size=(96, 96),
num_workers=None,
transform=True,
)
train_dataset = train_data.dataset
train_dl = train_data.dataloader
val_dl = val_data.dataloader
num_classes = len(train_dataset.classes)
autodataset = AutoDataset(train_dl, val_dl, num_classes=num_classes)
train_data = image_dataset_from_directory(
f"{data_dir}/hymenoptera_data/train/",
image_size=(96, 96),
num_workers=None,
transform=True,
batch_size=1,
shuffle=True,
)
val_data = image_dataset_from_directory(
f"{data_dir}/hymenoptera_data/val/",
image_size=(96, 96),
num_workers=None,
transform=True,
)
train_dataset = train_data.dataset
train_dl = train_data.dataloader
val_dl = val_data.dataloader
num_classes = len(train_dataset.classes)
autodataset = AutoDataset(train_dl, val_dl, num_classes=num_classes)
In [ ]:
Copied!
cnn = timm.create_model("resnet18", pretrained=False, num_classes=num_classes)
model = Model(cnn)
model.compile("crossentropyloss", "adam", metrics="accuracy")
cnn = timm.create_model("resnet18", pretrained=False, num_classes=num_classes)
model = Model(cnn)
model.compile("crossentropyloss", "adam", metrics="accuracy")
In [ ]:
Copied!
model.fit(
autodataset,
max_epochs=2,
steps_per_epoch=10,
)
model.fit(
autodataset,
max_epochs=2,
steps_per_epoch=10,
)
Progress... ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 0% -:--:-- ┏━━━━━━━┳━━━━━━━┳━━━━━━━┳━━━━━━━┓ ┃ curr… ┃ loss ┃ trai… ┃ trai… ┃ ┡━━━━━━━╇━━━━━━━╇━━━━━━━╇━━━━━━━┩ │ 0 │ 0.6… │ 0.7… │ 0.45… │ └───────┴───────┴───────┴───────┘ Progress... ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 0% -:--:-- ┏━━━━━━━┳━━━━━━━┳━━━━━━━┳━━━━━━━┓ ┃ curr… ┃ loss ┃ trai… ┃ trai… ┃ ┡━━━━━━━╇━━━━━━━╇━━━━━━━╇━━━━━━━┩ │ 0 │ 0.6… │ 0.7… │ 0.45… │ └───────┴───────┴───────┴───────┘ Validating... ━━━━━━━━━━━━━━━━━━━━━━━━━━╸━━━━━ 84% 0:00:01 ┏━━━━━━━┳━━━━━━━┳━━━━━━━┳━━━━━━━┓ ┃ curr… ┃ loss ┃ trai… ┃ trai… ┃ ┡━━━━━━━╇━━━━━━━╇━━━━━━━╇━━━━━━━┩ │ 0 │ 0.6… │ 0.7… │ 0.45… │ └───────┴───────┴───────┴───────┘
Tracker(max_epochs=2, current_epoch=0, current_step=11, steps_per_epoch=10, train=TrackingValues(loss=0.7080050922963925, steps=11, step_loss=0.6093937158584595, metrics={'Accuracy': tensor(0.4545)}), val=TrackingValues(loss=None, steps=129, step_loss=0.8445609211921692, metrics={'Accuracy': tensor(0.5426)}))
Out[ ]:
Tracker(max_epochs=2, current_epoch=0, current_step=11, steps_per_epoch=10, train=TrackingValues(loss=0.7080050922963925, steps=11, step_loss=0.6093937158584595, metrics={'Accuracy': tensor(0.4545)}), val=TrackingValues(loss=None, steps=129, step_loss=0.8445609211921692, metrics={'Accuracy': tensor(0.5426)}))
In [ ]:
Copied!
model.tracker.train.metrics
model.tracker.train.metrics
Out[ ]:
{'Accuracy': tensor(0.4545)}
Last update:
October 8, 2021