add imbalanced classes video code and kaggle cat vs dog
|
After Width: | Height: | Size: 108 KiB |
|
After Width: | Height: | Size: 180 KiB |
|
After Width: | Height: | Size: 69 KiB |
|
After Width: | Height: | Size: 155 KiB |
|
After Width: | Height: | Size: 79 KiB |
|
After Width: | Height: | Size: 38 KiB |
|
After Width: | Height: | Size: 64 KiB |
|
After Width: | Height: | Size: 89 KiB |
|
After Width: | Height: | Size: 100 KiB |
|
After Width: | Height: | Size: 61 KiB |
|
After Width: | Height: | Size: 40 KiB |
|
After Width: | Height: | Size: 96 KiB |
|
After Width: | Height: | Size: 50 KiB |
|
After Width: | Height: | Size: 49 KiB |
|
After Width: | Height: | Size: 184 KiB |
|
After Width: | Height: | Size: 40 KiB |
|
After Width: | Height: | Size: 69 KiB |
|
After Width: | Height: | Size: 64 KiB |
|
After Width: | Height: | Size: 68 KiB |
|
After Width: | Height: | Size: 80 KiB |
|
After Width: | Height: | Size: 80 KiB |
|
After Width: | Height: | Size: 100 KiB |
|
After Width: | Height: | Size: 25 KiB |
|
After Width: | Height: | Size: 62 KiB |
|
After Width: | Height: | Size: 28 KiB |
|
After Width: | Height: | Size: 53 KiB |
|
After Width: | Height: | Size: 45 KiB |
|
After Width: | Height: | Size: 128 KiB |
|
After Width: | Height: | Size: 69 KiB |
|
After Width: | Height: | Size: 55 KiB |
|
After Width: | Height: | Size: 97 KiB |
|
After Width: | Height: | Size: 80 KiB |
|
After Width: | Height: | Size: 52 KiB |
|
After Width: | Height: | Size: 64 KiB |
|
After Width: | Height: | Size: 40 KiB |
|
After Width: | Height: | Size: 24 KiB |
|
After Width: | Height: | Size: 69 KiB |
|
After Width: | Height: | Size: 44 KiB |
|
After Width: | Height: | Size: 36 KiB |
|
After Width: | Height: | Size: 57 KiB |
|
After Width: | Height: | Size: 65 KiB |
|
After Width: | Height: | Size: 298 KiB |
|
After Width: | Height: | Size: 846 KiB |
|
After Width: | Height: | Size: 271 KiB |
|
After Width: | Height: | Size: 50 KiB |
|
After Width: | Height: | Size: 54 KiB |
|
After Width: | Height: | Size: 41 KiB |
|
After Width: | Height: | Size: 60 KiB |
|
After Width: | Height: | Size: 70 KiB |
|
After Width: | Height: | Size: 424 KiB |
|
After Width: | Height: | Size: 151 KiB |
54
ML/Pytorch/Basics/Imbalanced_classes/main.py
Normal file
@@ -0,0 +1,54 @@
|
||||
import torch
|
||||
import torchvision.datasets as datasets
|
||||
import os
|
||||
from torch.utils.data import WeightedRandomSampler, DataLoader
|
||||
import torchvision.transforms as transforms
|
||||
import torch.nn as nn
|
||||
|
||||
# Methods for dealing with imbalanced datasets:
|
||||
# 1. Oversampling
|
||||
# 2. Class weighting
|
||||
|
||||
def get_loader(root_dir, batch_size):
|
||||
my_transforms = transforms.Compose(
|
||||
[
|
||||
transforms.Resize((224, 224)),
|
||||
transforms.ToTensor(),
|
||||
]
|
||||
)
|
||||
|
||||
dataset = datasets.ImageFolder(root=root_dir, transform=my_transforms)
|
||||
class_weights = []
|
||||
for root, subdir, files in os.walk(root_dir):
|
||||
if len(files) > 0:
|
||||
class_weights.append(1/len(files))
|
||||
|
||||
sample_weights = [0] * len(dataset)
|
||||
|
||||
for idx, (data, label) in enumerate(dataset):
|
||||
class_weight = class_weights[label]
|
||||
sample_weights[idx] = class_weight
|
||||
|
||||
sampler = WeightedRandomSampler(sample_weights, num_samples=
|
||||
len(sample_weights), replacement=True)
|
||||
|
||||
loader = DataLoader(dataset, batch_size=batch_size, sampler=sampler)
|
||||
return loader
|
||||
|
||||
|
||||
def main():
|
||||
loader = get_loader(root_dir="dataset", batch_size=8)
|
||||
|
||||
num_retrievers = 0
|
||||
num_elkhounds = 0
|
||||
for epoch in range(10):
|
||||
for data, labels in loader:
|
||||
num_retrievers += torch.sum(labels==0)
|
||||
num_elkhounds += torch.sum(labels==1)
|
||||
|
||||
print(num_retrievers)
|
||||
print(num_elkhounds)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
||||