{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/duoan/TorchCode/blob/master/templates/22_conv2d.ipynb)\n", "\n", "# ๐ŸŸ  Medium: 2D Convolution\n", "\n", "Implement **2D convolution** from scratch.\n", "\n", "### Signature\n", "```python\n", "def my_conv2d(x, weight, bias=None, stride=1, padding=0):\n", " # x: (B, C_in, H, W), weight: (C_out, C_in, kH, kW)\n", " # Returns: (B, C_out, H_out, W_out)\n", "```\n", "\n", "### Rules\n", "- Do NOT use `F.conv2d` or `nn.Conv2d`\n", "- Support `stride` and `padding` parameters\n", "- `F.pad` for zero-padding is allowed" ], "outputs": [] }, { "cell_type": "code", "metadata": {}, "source": [ "# Install torch-judge in Colab (no-op in JupyterLab/Docker)\n", "try:\n", " import google.colab\n", " get_ipython().run_line_magic('pip', 'install -q torch-judge')\n", "except ImportError:\n", " pass\n" ], "outputs": [], "execution_count": null }, { "cell_type": "code", "metadata": {}, "outputs": [], "source": [ "import torch\n", "import torch.nn.functional as F" ], "execution_count": null }, { "cell_type": "code", "metadata": {}, "outputs": [], "source": [ "# โœ๏ธ YOUR IMPLEMENTATION HERE\n", "\n", "def my_conv2d(x, weight, bias=None, stride=1, padding=0):\n", " pass # extract patches, apply kernel, handle stride/padding" ], "execution_count": null }, { "cell_type": "code", "metadata": {}, "outputs": [], "source": [ "# ๐Ÿงช Debug\n", "x = torch.randn(1, 3, 8, 8)\n", "w = torch.randn(16, 3, 3, 3)\n", "print('Output:', my_conv2d(x, w).shape)\n", "print('Match:', torch.allclose(my_conv2d(x, w), F.conv2d(x, w), atol=1e-4))" ], "execution_count": null }, { "cell_type": "code", "metadata": {}, "outputs": [], "source": [ "# โœ… SUBMIT\n", "from torch_judge import check\n", "check('conv2d')" ], "execution_count": null } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "name": "python", "version": "3.11.0" } }, "nbformat": 4, "nbformat_minor": 4 }