{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# PKR Currency Classifier Training Notebook" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import torch\n", "import torch.nn as nn\n", "import torchvision.transforms as transforms\n", "from torchvision import models, datasets\n", "from torch.utils.data import DataLoader\n", "import os" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Load dataset\n", "transform = transforms.Compose([\n", " transforms.Resize((224, 224)),\n", " transforms.ToTensor(),\n", " transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])\n", "])\n", "\n", "train_data = datasets.ImageFolder('currency_dataset', transform=transform)\n", "train_loader = DataLoader(train_data, batch_size=16, shuffle=True)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Model\n", "weights = models.MobileNet_V2_Weights.DEFAULT\n", "model = models.mobilenet_v2(weights=weights)\n", "model.classifier[1] = nn.Linear(model.last_channel, 2)\n", "criterion = nn.CrossEntropyLoss()\n", "optimizer = torch.optim.Adam(model.parameters(), lr=0.001)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Train\n", "model.train()\n", "for epoch in range(5):\n", " for images, labels in train_loader:\n", " optimizer.zero_grad()\n", " outputs = model(images)\n", " loss = criterion(outputs, labels)\n", " loss.backward()\n", " optimizer.step()\n", " print(f'Epoch {epoch+1}, Loss: {loss.item()}')" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Save\n", "torch.save(model, 'pkr_currency_classifier.pt')" ] } ], "metadata": { "colab": { "name": "training_notebook.ipynb", "provenance": [] }, "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "name": "python", "version": "" } }, "nbformat": 4, "nbformat_minor": 0 }