{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": ["# Attendance CNN — training notebook (demo)"] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "%matplotlib inline\n", "import torch\n", "import torch.nn as nn\n", "!pip install torchvision -q" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "class AttendanceCNN(nn.Module):\n", " def __init__(self, num_classes=40):\n", " super().__init__()\n", " self.conv1 = nn.Conv2d(3, 16, kernel_size=3, padding=1)\n", " self.relu1 = nn.ReLU()\n", " self.pool1 = nn.MaxPool2d(2, 2)\n", " self.conv2 = nn.Conv2d(16, 32, kernel_size=3, padding=1)\n", " self.relu2 = nn.ReLU()\n", " self.pool2 = nn.MaxPool2d(2, 2)\n", " self.flatten = nn.Flatten()\n", " self.fc1 = nn.Linear(32 * 32 * 32, 96)\n", " self.dropout = nn.Dropout(0.25)\n", " self.fc2 = nn.Linear(96, num_classes)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ " def forward(self, x):\n", " x = self.pool1(self.relu1(self.conv1(x)))\n", " x = self.pool2(self.relu2(self.conv2(x)))\n", " x = self.flatten(x)\n", " x = self.dropout(self.fc1(x))\n", " return self.fc2(x)" ] } ], "metadata": { "kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"name": "python", "version": "3.11"} }, "nbformat": 4, "nbformat_minor": 5 }