Train a Catgirl Classifier Model
Python··30 views
import torch
import torchvision
import torchvision.transforms as transforms
from torch.utils.data import DataLoader
from torchvision.datasets import ImageFolder
import torch.nn as nn
import torch.optim as optim
# Load dataset (dataset/catgirl and dataset/not_catgirl)
transform = transforms.Compose([
transforms.Resize((224, 224)),
transforms.ToTensor(),
transforms.Normalize([0.5], [0.5])
])
dataset = ImageFolder(root="dataset/", transform=transform)
dataloader = DataLoader(dataset, batch_size=32, shuffle=True)
# Load pre-trained model (ResNet-50)
model = torchvision.models.resnet50(weights=torchvision.models.ResNet50_Weights.IMAGENET1K_V1)
model.fc = nn.Linear(model.fc.in_features, 2) # Two classes: catgirl and not-catgirl
# Training setup
device = "cuda" if torch.cuda.is_available() else "cpu"
model = model.to(device)
criterion = nn.CrossEntropyLoss()
optimizer = optim.Adam(model.parameters(), lr=0.001)
# Training loop
epochs = 10
for epoch in range(epochs):
model.train()
total_loss = 0
for images, labels in dataloader:
images, labels = images.to(device), labels.to(device)
optimizer.zero_grad()
outputs = model(images)
loss = criterion(outputs, labels)
loss.backward()
optimizer.step()
total_loss += loss.item()
print(f"Epoch {epoch+1}/{epochs}, Loss: {total_loss/len(dataloader)}")
torch.save(model.state_dict(), "catgirl_detector.pth")