diff --git a/Module1/Quickstart guide to PyTorch Basics.ipynb b/Module1/Quickstart guide to PyTorch Basics.ipynb
new file mode 100644
index 0000000..bdcfea3
--- /dev/null
+++ b/Module1/Quickstart guide to PyTorch Basics.ipynb
@@ -0,0 +1,1762 @@
+{
+ "nbformat": 4,
+ "nbformat_minor": 0,
+ "metadata": {
+ "colab": {
+ "provenance": [],
+ "include_colab_link": true
+ },
+ "kernelspec": {
+ "name": "python3",
+ "display_name": "Python 3"
+ },
+ "language_info": {
+ "name": "python"
+ }
+ },
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "view-in-github",
+ "colab_type": "text"
+ },
+ "source": [
+ ""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "# Quickstart guide to PyTorch Basics\n",
+ "\n",
+ "LLM Bootcamp requires you to have PyTorch basics. In this Notebook, we have attached a Quickstart guide to get started with PyTorch along with important resources to get started with PyTorch.\n",
+ "\n",
+ "##⚡️LLM Bootcamp\n",
+ "Before proceeding with the further modules, we expect you to atleast have basic knowledge of PyTorch. This notebook is a Quickstart guide for PyTorch Basics\n",
+ "\n",
+ "If you are comfortable with PyTorch you can skip this notebook.\n",
+ "\n",
+ "**Get Started with PyTorch**\n",
+ "\n",
+ "An open source machine learning framework that accelerates the path from research prototyping to production deployment.\n",
+ "\n",
+ "pip install torch\n",
+ "\n",
+ "**Table of Contents:**\n",
+ "\n",
+ "- Basics\n",
+ "\n",
+ "- Tensor Operations\n",
+ "\n",
+ "- Extra PyTorch operations based on Tensor Shape\n",
+ "\n",
+ "- Ouickstart- Build A Neural Network"
+ ],
+ "metadata": {
+ "id": "KpHtA6MFNIAd"
+ }
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "import torch\n",
+ "import numpy as np"
+ ],
+ "metadata": {
+ "id": "F8wtIG0oHvDe"
+ },
+ "execution_count": 2,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "### Basics\n",
+ "Just like Tensorflow, we shall continue playing with Tensors in PyTorch as well."
+ ],
+ "metadata": {
+ "id": "zjMwEzKL8Rc6"
+ }
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "\n",
+ "#Create Tensor From Data(List)\n",
+ "data = [[1, 2],[3, 4]]\n",
+ "tensors = torch.tensor(data)\n",
+ "tensors"
+ ],
+ "metadata": {
+ "id": "SYTsICOL7F7E",
+ "outputId": "14f2bbbd-7cbf-4c59-9213-f4cf4958751e",
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ }
+ },
+ "execution_count": 3,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "tensor([[1, 2],\n",
+ " [3, 4]])"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 3
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "#Create from NumPy\n",
+ "np_array = np.arange(10)\n",
+ "tensor_np = torch.from_numpy(np_array)\n",
+ "tensor_np"
+ ],
+ "metadata": {
+ "id": "CT64_RSH8RET",
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "outputId": "f5e25fca-5337-4797-80d1-43747efd682a"
+ },
+ "execution_count": 4,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "tensor([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 4
+ }
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "#### Shape, ndim and dtype\n",
+ "This is same as we saw in Numpy Tutorial - Day 1"
+ ],
+ "metadata": {
+ "id": "1mxBeeZ1_oWG"
+ }
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "\n",
+ "\n",
+ "tensor_np.shape"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "2OYIpc35_Oyb",
+ "outputId": "f6ed2bcc-c095-4c13-92bc-ca1de68153d6"
+ },
+ "execution_count": 5,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "torch.Size([10])"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 5
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "\n",
+ "tensor_np.ndim"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "0Mhg28ES_WKC",
+ "outputId": "6425b9cf-29ee-46c5-8df9-29c9f4b875c7"
+ },
+ "execution_count": 6,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "1"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 6
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "tensor_np.dtype"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "-c16Ns-I_4Mb",
+ "outputId": "864cd688-9c64-45ee-c69d-e0309f31d319"
+ },
+ "execution_count": 7,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "torch.int64"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 7
+ }
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "### Tensor_Operations"
+ ],
+ "metadata": {
+ "id": "BSeEFDgk_-I_"
+ }
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "\n",
+ "ten1 = torch.tensor([1,2,3])\n",
+ "ten2 = torch.tensor([4,5,6])\n",
+ "ten1+ten2"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "W1-HyxDLA06O",
+ "outputId": "7a849d6f-5f0a-4c52-f1f4-b9927037ec24"
+ },
+ "execution_count": 8,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "tensor([5, 7, 9])"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 8
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "#You can either use + or torch.add to perform Tensor Additions\n",
+ "\n",
+ "torch.add(ten1,ten2)"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "6kq2m9GFBa2V",
+ "outputId": "54fbf26b-e218-4694-ae8b-3fbf6d117298"
+ },
+ "execution_count": 9,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "tensor([5, 7, 9])"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 9
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "\n",
+ "torch.sub(ten2,ten1)"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "ZIy7uuodBjqq",
+ "outputId": "951efb96-b274-420e-90a6-3771fc5ad068"
+ },
+ "execution_count": 10,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "tensor([3, 3, 3])"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 10
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "\n",
+ "torch.subtract(ten2,ten1)\n",
+ "\n",
+ "#You can either use - or torch.sub to perform Tensor Additions"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "duDGqvRGBryr",
+ "outputId": "47fc9350-2d6e-4f28-bd4a-b93b6ef2d1c6"
+ },
+ "execution_count": 11,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "tensor([3, 3, 3])"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 11
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "ten1 - ten2"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "5zJkg6N2B6Oe",
+ "outputId": "9de0ca13-5f37-4a22-ddd5-8010359a89d8"
+ },
+ "execution_count": 12,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "tensor([-3, -3, -3])"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 12
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "ten1 * 10"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "sVQcvf4FB_Pv",
+ "outputId": "685b2212-a196-4f9b-96ce-93e2b1e80f01"
+ },
+ "execution_count": 13,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "tensor([10, 20, 30])"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 13
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "ten1 **3"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "wc51j9g0CUUM",
+ "outputId": "62f05a21-d5e8-4a1c-a5d4-5b465d30653c"
+ },
+ "execution_count": 14,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "tensor([ 1, 8, 27])"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 14
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "ten1 /2"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "UHfyAuBZCCP9",
+ "outputId": "1fb47b38-8cf0-4f7e-ac16-6255b4e940dd"
+ },
+ "execution_count": 15,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "tensor([0.5000, 1.0000, 1.5000])"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 15
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "ten1 // 2"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "mjzlUy2UCFHY",
+ "outputId": "f29355f8-7684-4127-a335-18162387524c"
+ },
+ "execution_count": 16,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "tensor([0, 1, 1])"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 16
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "ten1 %2"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "-PEjPTokCOTK",
+ "outputId": "949f9570-abca-42d1-c64f-f71fa08146e7"
+ },
+ "execution_count": 17,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "tensor([1, 0, 1])"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 17
+ }
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "#### Matrix Multiplication"
+ ],
+ "metadata": {
+ "id": "mQRmzTh_Frzt"
+ }
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "**very important operation in Deep Learning- Matrix Multiplication**\n",
+ "- Rules of Matrix Multiplication:\n",
+ "\n",
+ "\n",
+ "(3,2) * (3,2) = Error\n",
+ "\n",
+ "(4,3) * (3,2) = (4,2)\n",
+ "\n",
+ "(2,2) * (2,5) = (2,5)"
+ ],
+ "metadata": {
+ "id": "xLvpduk6CmK3"
+ }
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "torch.matmul(ten1,ten2)"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "pLTg9e9mDweX",
+ "outputId": "90e768b4-20f2-4d6e-ef44-f24ba7bc4d6d"
+ },
+ "execution_count": 18,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "tensor(32)"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 18
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "matrix4_3 = torch.tensor([[1,2,3], [4,5,6], [7,8,9], [10,11,12]])\n",
+ "matrix4_3.shape"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "qkoSxW6nD3vS",
+ "outputId": "0284da78-d2f2-4bb3-c920-c1e4ff283700"
+ },
+ "execution_count": 19,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "torch.Size([4, 3])"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 19
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "matrix3_2 = torch.tensor([[1,2], [3,4], [5,6]])\n",
+ "matrix3_2.shape"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "PxraE7LKEAWA",
+ "outputId": "5f978b42-dba9-4ef1-c570-cb7f47922ec0"
+ },
+ "execution_count": 20,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "torch.Size([3, 2])"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 20
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "result = torch.matmul(matrix4_3,matrix3_2) #=> will result in (4,2)\n",
+ "result"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "y1k1dhMiENfH",
+ "outputId": "96dece02-6cee-4d57-9645-c9776252fa35"
+ },
+ "execution_count": 21,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "tensor([[ 22, 28],\n",
+ " [ 49, 64],\n",
+ " [ 76, 100],\n",
+ " [103, 136]])"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 21
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "result.shape"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "lFiPDmqiEfZv",
+ "outputId": "c451d134-2b9d-420a-81f2-f06b79480f7d"
+ },
+ "execution_count": 22,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "torch.Size([4, 2])"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 22
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "#You can also use torch.mm() which is a short for torch.matmul()\n",
+ "\n",
+ "torch.mm(matrix4_3,matrix3_2)"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "nh654HoSEjXN",
+ "outputId": "ec902711-d8f5-4f95-ca36-33f2e637a7b4"
+ },
+ "execution_count": 23,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "tensor([[ 22, 28],\n",
+ " [ 49, 64],\n",
+ " [ 76, 100],\n",
+ " [103, 136]])"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 23
+ }
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "\n",
+ "#### Transpose of tensor"
+ ],
+ "metadata": {
+ "id": "DU5LOx7KCjD_"
+ }
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "matrix4_3"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "LvmC3gXOCSuU",
+ "outputId": "cdb54d1c-77a2-40e5-b67c-f2a4634b9405"
+ },
+ "execution_count": 24,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "tensor([[ 1, 2, 3],\n",
+ " [ 4, 5, 6],\n",
+ " [ 7, 8, 9],\n",
+ " [10, 11, 12]])"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 24
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "matrix4_3.T"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "rok53r5CFbjG",
+ "outputId": "ae760659-d033-4251-fb76-05c136f3b7a4"
+ },
+ "execution_count": 25,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "tensor([[ 1, 4, 7, 10],\n",
+ " [ 2, 5, 8, 11],\n",
+ " [ 3, 6, 9, 12]])"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 25
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "torch.t(matrix4_3)"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "pkiyp0EvFhkh",
+ "outputId": "e7213ca3-6688-4488-f39c-ec58e817ef59"
+ },
+ "execution_count": 26,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "tensor([[ 1, 4, 7, 10],\n",
+ " [ 2, 5, 8, 11],\n",
+ " [ 3, 6, 9, 12]])"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 26
+ }
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "\n",
+ "### Extra_PyTorch_operations_based_on_Tensor_Shape\n",
+ "- Zeros\n",
+ "- Ones\n",
+ "- Random\n",
+ "- Full"
+ ],
+ "metadata": {
+ "id": "UmwsW4h5F8_j"
+ }
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "tensorZeroes = torch.zeros((3,3))\n",
+ "tensorZeroes"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "KPi0VFjaILPJ",
+ "outputId": "2d82add4-61e4-4696-f4c3-4fed780a6091"
+ },
+ "execution_count": 27,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "tensor([[0., 0., 0.],\n",
+ " [0., 0., 0.],\n",
+ " [0., 0., 0.]])"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 27
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "tensorOnes = torch.ones((3,3))\n",
+ "tensorOnes"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "gMnih1D1IRsg",
+ "outputId": "85f0ac8d-fe54-4d83-d583-58edf9d1fba3"
+ },
+ "execution_count": 28,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "tensor([[1., 1., 1.],\n",
+ " [1., 1., 1.],\n",
+ " [1., 1., 1.]])"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 28
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "tensorRandomN = torch.randn((3,3)) #includes negative tensors\n",
+ "tensorRandomN"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "OKXLYp6MIg-g",
+ "outputId": "a34c6bbf-80a3-41d7-f04c-c1011759368d"
+ },
+ "execution_count": 29,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "tensor([[ 0.7668, 0.7389, 1.1770],\n",
+ " [-1.5145, 1.5947, -0.3392],\n",
+ " [-0.3251, 0.9855, -0.2110]])"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 29
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "tensorRandom = torch.rand((3,3)) #includes only positive tensors\n",
+ "tensorRandom"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "2JYQWB7pInG-",
+ "outputId": "5cc600c7-81a6-4687-c7ca-ac9a421815d3"
+ },
+ "execution_count": 30,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "tensor([[0.7060, 0.7018, 0.5381],\n",
+ " [0.1404, 0.3814, 0.2676],\n",
+ " [0.7314, 0.3326, 0.6800]])"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 30
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "\n",
+ "\n",
+ "customFill = torch.full((3,3),5)\n",
+ "customFill"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "HUbqpqGuIuuT",
+ "outputId": "5e741711-cf57-4563-d348-5b2c8b37bb55"
+ },
+ "execution_count": 31,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "tensor([[5, 5, 5],\n",
+ " [5, 5, 5],\n",
+ " [5, 5, 5]])"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 31
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "\n",
+ "initialFill = torch.full((3,3),0.01)\n",
+ "initialFill"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "TY9DNCDLI1Yf",
+ "outputId": "92a921e2-c645-4f6b-ce34-759f249074c9"
+ },
+ "execution_count": 32,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "tensor([[0.0100, 0.0100, 0.0100],\n",
+ " [0.0100, 0.0100, 0.0100],\n",
+ " [0.0100, 0.0100, 0.0100]])"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 32
+ }
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "###Quickstart\n",
+ "#####Install **Torchvision**, The torchvision package consists of popular datasets, model architectures, and common image transformations for computer vision."
+ ],
+ "metadata": {
+ "id": "pmDF_K9KI3vK"
+ }
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "\n",
+ "pip install torchvision --no-deps"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "WVaRm8iRKI0F",
+ "outputId": "1e65ba8c-4c2b-4f2c-a0cd-fe9082983774"
+ },
+ "execution_count": 33,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "Requirement already satisfied: torchvision in /usr/local/lib/python3.10/dist-packages (0.15.2+cu118)\n"
+ ]
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "from torch.utils.data import DataLoader\n",
+ "from torchvision import datasets\n",
+ "from torchvision.transforms import ToTensor\n",
+ "from torch import nn"
+ ],
+ "metadata": {
+ "id": "pRDYln36KW17"
+ },
+ "execution_count": 34,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "# Download training data from open datasets.\n",
+ "training_data = datasets.FashionMNIST(\n",
+ "root=\"data\",\n",
+ "train=True,\n",
+ "download=True,\n",
+ "transform=ToTensor(),\n",
+ ")"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "xpgbTNOHKS96",
+ "outputId": "23989501-7712-4f6e-a3df-7cae1cc197fb"
+ },
+ "execution_count": 35,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "Downloading http://fashion-mnist.s3-website.eu-central-1.amazonaws.com/train-images-idx3-ubyte.gz\n",
+ "Downloading http://fashion-mnist.s3-website.eu-central-1.amazonaws.com/train-images-idx3-ubyte.gz to data/FashionMNIST/raw/train-images-idx3-ubyte.gz\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "100%|██████████| 26421880/26421880 [00:02<00:00, 11820245.47it/s]\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "Extracting data/FashionMNIST/raw/train-images-idx3-ubyte.gz to data/FashionMNIST/raw\n",
+ "\n",
+ "Downloading http://fashion-mnist.s3-website.eu-central-1.amazonaws.com/train-labels-idx1-ubyte.gz\n",
+ "Downloading http://fashion-mnist.s3-website.eu-central-1.amazonaws.com/train-labels-idx1-ubyte.gz to data/FashionMNIST/raw/train-labels-idx1-ubyte.gz\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "100%|██████████| 29515/29515 [00:00<00:00, 202467.13it/s]\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "Extracting data/FashionMNIST/raw/train-labels-idx1-ubyte.gz to data/FashionMNIST/raw\n",
+ "\n",
+ "Downloading http://fashion-mnist.s3-website.eu-central-1.amazonaws.com/t10k-images-idx3-ubyte.gz\n",
+ "Downloading http://fashion-mnist.s3-website.eu-central-1.amazonaws.com/t10k-images-idx3-ubyte.gz to data/FashionMNIST/raw/t10k-images-idx3-ubyte.gz\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "100%|██████████| 4422102/4422102 [00:01<00:00, 3712034.39it/s]\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "Extracting data/FashionMNIST/raw/t10k-images-idx3-ubyte.gz to data/FashionMNIST/raw\n",
+ "\n",
+ "Downloading http://fashion-mnist.s3-website.eu-central-1.amazonaws.com/t10k-labels-idx1-ubyte.gz\n",
+ "Downloading http://fashion-mnist.s3-website.eu-central-1.amazonaws.com/t10k-labels-idx1-ubyte.gz to data/FashionMNIST/raw/t10k-labels-idx1-ubyte.gz\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "100%|██████████| 5148/5148 [00:00<00:00, 10548254.51it/s]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "Extracting data/FashionMNIST/raw/t10k-labels-idx1-ubyte.gz to data/FashionMNIST/raw\n",
+ "\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\n"
+ ]
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "?training_data"
+ ],
+ "metadata": {
+ "id": "9_ljYopbKm_g"
+ },
+ "execution_count": 36,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "type(training_data)"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "CFtZ9aHUKemF",
+ "outputId": "a91cbd1c-83ce-46ce-e78d-3c250fe8325b"
+ },
+ "execution_count": 37,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "torchvision.datasets.mnist.FashionMNIST"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 37
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "len(training_data) # There are 60000 (img, labels) tuples in the training data"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "TqnIB5yHN8pb",
+ "outputId": "c76b4d46-0326-4efc-cf05-9b3057462c75"
+ },
+ "execution_count": 38,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "60000"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 38
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "img, label=training_data[0]"
+ ],
+ "metadata": {
+ "id": "OgsxJi8gSU3P"
+ },
+ "execution_count": 39,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [],
+ "metadata": {
+ "id": "gqwQLUMGSfDZ"
+ },
+ "execution_count": 39,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "img.shape # img shape"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "xD-4oXB1OS_0",
+ "outputId": "1453f183-4cb2-4973-b29f-09ecf6f32051"
+ },
+ "execution_count": 40,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "torch.Size([1, 28, 28])"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 40
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "label # The tag number that the image belongs to"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "TBPcXgpoPYJB",
+ "outputId": "5ff7b387-cc38-4d51-bd43-8f25f3d71ce1"
+ },
+ "execution_count": 41,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "9"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 41
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "# Download test data from open datasets.\n",
+ "test_data = datasets.FashionMNIST(\n",
+ "root=\"data\",\n",
+ "train=False,\n",
+ "download=True,\n",
+ "transform=ToTensor(),\n",
+ ")"
+ ],
+ "metadata": {
+ "id": "32_co4cLKcDY"
+ },
+ "execution_count": 42,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "len(test_data)"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "LEGASWNZQ--3",
+ "outputId": "a5eed85e-f929-49bb-eba4-b3eb37b75dab"
+ },
+ "execution_count": 43,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "10000"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 43
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "timg, label=test_data[0]"
+ ],
+ "metadata": {
+ "id": "UJs3W-4vSw_U"
+ },
+ "execution_count": 44,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "timg.shape,label"
+ ],
+ "metadata": {
+ "id": "2rCJl_BjTAMZ",
+ "outputId": "ab41c4b8-8953-4134-e879-e5effb1a6baa",
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ }
+ },
+ "execution_count": 45,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "(torch.Size([1, 28, 28]), 9)"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 45
+ }
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "**Dataloader** wraps an iterable over our dataset, and supports automatic batching, sampling, shuffling and multiprocess data loading.\n",
+ "\n",
+ " Here we define a batch size of 64, i.e. each element in the dataloader iterable will return a batch of 64 features and labels."
+ ],
+ "metadata": {
+ "id": "KP0sTB8qRhGn"
+ }
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "import matplotlib.pyplot as plt\n",
+ "\n",
+ "plt.figure(figsize=(12,10))\n",
+ "for i in range(9):\n",
+ " plt.subplot(3,3,i+1)\n",
+ " sample_image,sample_label = training_data[i]\n",
+ " plt.imshow(sample_image[0])\n",
+ " plt.title(sample_label)"
+ ],
+ "metadata": {
+ "id": "OehhjX8XRwAY",
+ "outputId": "b0fbfb25-0f4d-4962-e3c9-8e88543d94e8",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 290
+ }
+ },
+ "execution_count": 46,
+ "outputs": [
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ "