From 32b4fc4e9ddc8b614422627e3d550139238f8cd2 Mon Sep 17 00:00:00 2001 From: Thiksiga <121288510+Thiksiga@users.noreply.github.com> Date: Mon, 21 Apr 2025 13:22:43 +0530 Subject: [PATCH 1/8] Created using Colab --- lab1/PT_Part1_Intro.ipynb | 99 ++++++++++++++++++++++++++++++++------- 1 file changed, 83 insertions(+), 16 deletions(-) diff --git a/lab1/PT_Part1_Intro.ipynb b/lab1/PT_Part1_Intro.ipynb index db97d067..25353568 100644 --- a/lab1/PT_Part1_Intro.ipynb +++ b/lab1/PT_Part1_Intro.ipynb @@ -60,11 +60,52 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "LkaimNJfYZ2w" - }, - "outputs": [], + "execution_count": 1, + "metadata": { + "id": "LkaimNJfYZ2w", + "outputId": "71b7e574-5244-40e8-e72d-cdb338d0340f", + "colab": { + "base_uri": "https://localhost:8080/" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m2.8/2.8 MB\u001b[0m \u001b[31m17.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25h Preparing metadata (setup.py) ... \u001b[?25l\u001b[?25hdone\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m149.3/149.3 kB\u001b[0m \u001b[31m5.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m491.2/491.2 kB\u001b[0m \u001b[31m38.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m467.8/467.8 kB\u001b[0m \u001b[31m39.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m68.7/68.7 kB\u001b[0m \u001b[31m7.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m116.3/116.3 kB\u001b[0m \u001b[31m13.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m183.9/183.9 kB\u001b[0m \u001b[31m18.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m161.7/161.7 kB\u001b[0m \u001b[31m16.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m143.5/143.5 kB\u001b[0m \u001b[31m14.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m44.4/44.4 kB\u001b[0m \u001b[31m4.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m363.4/363.4 MB\u001b[0m \u001b[31m1.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m13.8/13.8 MB\u001b[0m \u001b[31m123.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m24.6/24.6 MB\u001b[0m \u001b[31m90.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m883.7/883.7 kB\u001b[0m \u001b[31m57.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m664.8/664.8 MB\u001b[0m \u001b[31m1.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m211.5/211.5 MB\u001b[0m \u001b[31m5.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m56.3/56.3 MB\u001b[0m \u001b[31m12.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m127.9/127.9 MB\u001b[0m \u001b[31m7.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m207.5/207.5 MB\u001b[0m \u001b[31m6.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m21.1/21.1 MB\u001b[0m \u001b[31m43.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m7.6/7.6 MB\u001b[0m \u001b[31m88.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m194.8/194.8 kB\u001b[0m \u001b[31m18.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m3.1/3.1 MB\u001b[0m \u001b[31m83.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.2/1.2 MB\u001b[0m \u001b[31m59.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m65.6/65.6 kB\u001b[0m \u001b[31m6.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25h Building wheel for mitdeeplearning (setup.py) ... \u001b[?25l\u001b[?25hdone\n", + "\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\n", + "gcsfs 2025.3.2 requires fsspec==2025.3.2, but you have fsspec 2024.12.0 which is incompatible.\u001b[0m\u001b[31m\n", + "\u001b[0m" + ] + } + ], "source": [ "import torch\n", "import torch.nn as nn\n", @@ -94,11 +135,24 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "tFxztZQInlAB" - }, - "outputs": [], + "execution_count": 2, + "metadata": { + "id": "tFxztZQInlAB", + "outputId": "ecbaec58-c358-41c9-9218-8e907824ba99", + "colab": { + "base_uri": "https://localhost:8080/" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "`integer` is a 0-d Tensor: 1234\n", + "`decimal` is a 0-d Tensor: 3.1415927410125732\n" + ] + } + ], "source": [ "integer = torch.tensor(1234)\n", "decimal = torch.tensor(3.14159265359)\n", @@ -118,11 +172,24 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "oaHXABe8oPcO" - }, - "outputs": [], + "execution_count": 3, + "metadata": { + "id": "oaHXABe8oPcO", + "outputId": "aa742fc3-c8c4-46c9-a50a-05bb25dbba22", + "colab": { + "base_uri": "https://localhost:8080/" + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "`fibonacci` is a 1-d Tensor with shape: torch.Size([6])\n", + "`count_to_100` is a 1-d Tensor with shape: torch.Size([100])\n" + ] + } + ], "source": [ "fibonacci = torch.tensor([1, 1, 2, 3, 5, 8])\n", "count_to_100 = torch.tensor(range(100))\n", @@ -698,4 +765,4 @@ }, "nbformat": 4, "nbformat_minor": 0 -} +} \ No newline at end of file From 312970786016b6d2d57db7d0b9c9dd3d529398f0 Mon Sep 17 00:00:00 2001 From: Thiksiga <121288510+Thiksiga@users.noreply.github.com> Date: Mon, 21 Apr 2025 14:30:00 +0530 Subject: [PATCH 2/8] Created using Colab --- lab1/PT_Part1_Intro.ipynb | 132 +++++++++++++++++++++++++++++--------- 1 file changed, 102 insertions(+), 30 deletions(-) diff --git a/lab1/PT_Part1_Intro.ipynb b/lab1/PT_Part1_Intro.ipynb index 25353568..f2219736 100644 --- a/lab1/PT_Part1_Intro.ipynb +++ b/lab1/PT_Part1_Intro.ipynb @@ -63,10 +63,10 @@ "execution_count": 1, "metadata": { "id": "LkaimNJfYZ2w", - "outputId": "71b7e574-5244-40e8-e72d-cdb338d0340f", "colab": { "base_uri": "https://localhost:8080/" - } + }, + "outputId": "71b7e574-5244-40e8-e72d-cdb338d0340f" }, "outputs": [ { @@ -138,10 +138,10 @@ "execution_count": 2, "metadata": { "id": "tFxztZQInlAB", - "outputId": "ecbaec58-c358-41c9-9218-8e907824ba99", "colab": { "base_uri": "https://localhost:8080/" - } + }, + "outputId": "ecbaec58-c358-41c9-9218-8e907824ba99" }, "outputs": [ { @@ -175,10 +175,10 @@ "execution_count": 3, "metadata": { "id": "oaHXABe8oPcO", - "outputId": "aa742fc3-c8c4-46c9-a50a-05bb25dbba22", "colab": { "base_uri": "https://localhost:8080/" - } + }, + "outputId": "aa742fc3-c8c4-46c9-a50a-05bb25dbba22" }, "outputs": [ { @@ -209,16 +209,28 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 7, "metadata": { - "id": "tFeBBe1IouS3" + "id": "tFeBBe1IouS3", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "135dc2a3-dcd2-40b0-aa52-ae979e102e7c" }, - "outputs": [], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "images is a 4-d Tensor with shape: torch.Size([10, 3, 256, 256])\n" + ] + } + ], "source": [ "### Defining higher-order Tensors ###\n", "\n", "'''TODO: Define a 2-d Tensor'''\n", - "matrix = # TODO\n", + "matrix = torch.tensor([[1, 2, 3, 4],[5, 6, 7, 8]])# TODO\n", "\n", "assert isinstance(matrix, torch.Tensor), \"matrix must be a torch Tensor object\"\n", "assert matrix.ndim == 2\n", @@ -226,7 +238,7 @@ "'''TODO: Define a 4-d Tensor.'''\n", "# Use torch.zeros to initialize a 4-d Tensor of zeros with size 10 x 3 x 256 x 256.\n", "# You can think of this as 10 images where each image is RGB 256 x 256.\n", - "images = # TODO\n", + "images = torch.zeros(10,3,256,256)# TODO\n", "\n", "assert isinstance(images, torch.Tensor), \"images must be a torch Tensor object\"\n", "assert images.ndim == 4, \"images must have 4 dimensions\"\n", @@ -245,11 +257,25 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 8, "metadata": { - "id": "FhaufyObuLEG" + "id": "FhaufyObuLEG", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "0b9cfb28-4420-4c52-84b2-eb1fdfbc9ae9" }, - "outputs": [], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "`row_vector`: tensor([5, 6, 7, 8])\n", + "`column_vector`: tensor([2, 6])\n", + "`scalar`: 2\n" + ] + } + ], "source": [ "row_vector = matrix[1]\n", "column_vector = matrix[:, 1]\n", @@ -275,11 +301,24 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 9, "metadata": { - "id": "X_YJrZsxYZ2z" + "id": "X_YJrZsxYZ2z", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "2c220cd7-4e65-4f17-a583-0b6fb9e3ece7" }, - "outputs": [], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "c1: 76\n", + "c2: 76\n" + ] + } + ], "source": [ "# Create the nodes in the graph and initialize values\n", "a = torch.tensor(15)\n", @@ -311,7 +350,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 12, "metadata": { "id": "PJnfzpWyYZ23", "scrolled": true @@ -323,9 +362,9 @@ "# Construct a simple computation function\n", "def func(a, b):\n", " '''TODO: Define the operation for c, d, e.'''\n", - " c = # TODO\n", - " d = # TODO\n", - " e = # TODO\n", + " c = a+b# TODO\n", + " d = b-1# TODO\n", + " e = c*d# TODO\n", " return e\n" ] }, @@ -340,11 +379,23 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 13, "metadata": { - "id": "pnwsf8w2uF7p" + "id": "pnwsf8w2uF7p", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "e214723c-4e3f-4540-98fc-debdd5c8c22f" }, - "outputs": [], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "e_out: 6.0\n" + ] + } + ], "source": [ "# Consider example values for a,b\n", "a, b = 1.5, 2.5\n", @@ -359,6 +410,7 @@ "id": "6HqgUIUhYZ29" }, "source": [ + "\n", "Notice how our output is a tensor with value defined by the output of the computation, and that the output has no shape as it is a single scalar value." ] }, @@ -382,7 +434,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 18, "metadata": { "id": "HutbJk-1kHPh" }, @@ -404,10 +456,10 @@ "\n", " def forward(self, x):\n", " '''TODO: define the operation for z (hint: use torch.matmul).'''\n", - " z = # TODO\n", + " z = (self.W * x) + self.bias# TODO\n", "\n", " '''TODO: define the operation for out (hint: use torch.sigmoid).'''\n", - " y = # TODO\n", + " y = torch.sigmoid(z) # TODO\n", " return y\n" ] }, @@ -422,11 +474,31 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 19, "metadata": { - "id": "2yxjCPa69hV_" + "id": "2yxjCPa69hV_", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 356 + }, + "outputId": "a7ff82c5-4fd3-4ba3-8e1a-ffcdb6008e46" }, - "outputs": [], + "outputs": [ + { + "output_type": "error", + "ename": "RuntimeError", + "evalue": "The size of tensor a (3) must match the size of tensor b (2) at non-singleton dimension 1", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mRuntimeError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0mlayer\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mOurDenseLayer\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnum_inputs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnum_outputs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0mx_input\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtorch\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtensor\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m2.\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 6\u001b[0;31m \u001b[0my\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mlayer\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx_input\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 7\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 8\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34mf\"input shape: {x_input.shape}\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/local/lib/python3.11/dist-packages/torch/nn/modules/module.py\u001b[0m in \u001b[0;36m_wrapped_call_impl\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 1737\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_compiled_call_impl\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;31m# type: ignore[misc]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1738\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1739\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_call_impl\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1740\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1741\u001b[0m \u001b[0;31m# torchrec tests the code consistency with the following code\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/local/lib/python3.11/dist-packages/torch/nn/modules/module.py\u001b[0m in \u001b[0;36m_call_impl\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 1748\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0m_global_backward_pre_hooks\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0m_global_backward_hooks\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1749\u001b[0m or _global_forward_hooks or _global_forward_pre_hooks):\n\u001b[0;32m-> 1750\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mforward_call\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1751\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1752\u001b[0m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mforward\u001b[0;34m(self, x)\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mforward\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0;34m'''TODO: define the operation for z (hint: use torch.matmul).'''\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 17\u001b[0;31m \u001b[0mz\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mW\u001b[0m \u001b[0;34m*\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbias\u001b[0m\u001b[0;31m# TODO\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 18\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 19\u001b[0m \u001b[0;34m'''TODO: define the operation for out (hint: use torch.sigmoid).'''\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mRuntimeError\u001b[0m: The size of tensor a (3) must match the size of tensor b (2) at non-singleton dimension 1" + ] + } + ], "source": [ "# Define a layer and test the output!\n", "num_inputs = 2\n", From d532d085322508b05959451f492d9ef02ae43ba6 Mon Sep 17 00:00:00 2001 From: Thiksiga <121288510+Thiksiga@users.noreply.github.com> Date: Mon, 21 Apr 2025 14:38:06 +0530 Subject: [PATCH 3/8] Created using Colab --- lab1/PT_Part1_Intro.ipynb | 40 +++++++++++++++++---------------------- 1 file changed, 17 insertions(+), 23 deletions(-) diff --git a/lab1/PT_Part1_Intro.ipynb b/lab1/PT_Part1_Intro.ipynb index f2219736..bc28d9db 100644 --- a/lab1/PT_Part1_Intro.ipynb +++ b/lab1/PT_Part1_Intro.ipynb @@ -350,7 +350,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 22, "metadata": { "id": "PJnfzpWyYZ23", "scrolled": true @@ -362,9 +362,9 @@ "# Construct a simple computation function\n", "def func(a, b):\n", " '''TODO: Define the operation for c, d, e.'''\n", - " c = a+b# TODO\n", - " d = b-1# TODO\n", - " e = c*d# TODO\n", + " c = torch.add(a,b)# TODO\n", + " d = torch.subtract(b,1)# TODO\n", + " e = torch.multiply(c,d)# TODO\n", " return e\n" ] }, @@ -379,13 +379,13 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 23, "metadata": { "id": "pnwsf8w2uF7p", "colab": { "base_uri": "https://localhost:8080/" }, - "outputId": "e214723c-4e3f-4540-98fc-debdd5c8c22f" + "outputId": "c83ccda7-6fad-4cb0-fa48-0338fc27e09c" }, "outputs": [ { @@ -434,7 +434,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 26, "metadata": { "id": "HutbJk-1kHPh" }, @@ -456,7 +456,7 @@ "\n", " def forward(self, x):\n", " '''TODO: define the operation for z (hint: use torch.matmul).'''\n", - " z = (self.W * x) + self.bias# TODO\n", + " z = torch.matmul(x, self.W) + self.bias# TODO\n", "\n", " '''TODO: define the operation for out (hint: use torch.sigmoid).'''\n", " y = torch.sigmoid(z) # TODO\n", @@ -474,28 +474,22 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 27, "metadata": { "id": "2yxjCPa69hV_", "colab": { - "base_uri": "https://localhost:8080/", - "height": 356 + "base_uri": "https://localhost:8080/" }, - "outputId": "a7ff82c5-4fd3-4ba3-8e1a-ffcdb6008e46" + "outputId": "615f0909-9aad-4d33-e784-7bfdb0655178" }, "outputs": [ { - "output_type": "error", - "ename": "RuntimeError", - "evalue": "The size of tensor a (3) must match the size of tensor b (2) at non-singleton dimension 1", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mRuntimeError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0mlayer\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mOurDenseLayer\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnum_inputs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnum_outputs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0mx_input\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtorch\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtensor\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m2.\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 6\u001b[0;31m \u001b[0my\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mlayer\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx_input\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 7\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 8\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34mf\"input shape: {x_input.shape}\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/usr/local/lib/python3.11/dist-packages/torch/nn/modules/module.py\u001b[0m in \u001b[0;36m_wrapped_call_impl\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 1737\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_compiled_call_impl\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;31m# type: ignore[misc]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1738\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1739\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_call_impl\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1740\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1741\u001b[0m \u001b[0;31m# torchrec tests the code consistency with the following code\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/usr/local/lib/python3.11/dist-packages/torch/nn/modules/module.py\u001b[0m in \u001b[0;36m_call_impl\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 1748\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0m_global_backward_pre_hooks\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0m_global_backward_hooks\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1749\u001b[0m or _global_forward_hooks or _global_forward_pre_hooks):\n\u001b[0;32m-> 1750\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mforward_call\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1751\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1752\u001b[0m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m\u001b[0m in \u001b[0;36mforward\u001b[0;34m(self, x)\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mforward\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0;34m'''TODO: define the operation for z (hint: use torch.matmul).'''\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 17\u001b[0;31m \u001b[0mz\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mW\u001b[0m \u001b[0;34m*\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbias\u001b[0m\u001b[0;31m# TODO\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 18\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 19\u001b[0m \u001b[0;34m'''TODO: define the operation for out (hint: use torch.sigmoid).'''\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mRuntimeError\u001b[0m: The size of tensor a (3) must match the size of tensor b (2) at non-singleton dimension 1" + "output_type": "stream", + "name": "stdout", + "text": [ + "input shape: torch.Size([1, 2])\n", + "output shape: torch.Size([1, 3])\n", + "output result: tensor([[0.1113, 0.9772, 0.1567]], grad_fn=)\n" ] } ], From 9788a95b659261c26a400cbf4af8fd0c986a5ba5 Mon Sep 17 00:00:00 2001 From: Thiksiga <121288510+Thiksiga@users.noreply.github.com> Date: Mon, 21 Apr 2025 19:15:59 +0530 Subject: [PATCH 4/8] Created using Colab --- lab1/PT_Part1_Intro.ipynb | 116 ++++++++++++++++++++++---------------- 1 file changed, 66 insertions(+), 50 deletions(-) diff --git a/lab1/PT_Part1_Intro.ipynb b/lab1/PT_Part1_Intro.ipynb index bc28d9db..2d528027 100644 --- a/lab1/PT_Part1_Intro.ipynb +++ b/lab1/PT_Part1_Intro.ipynb @@ -21,7 +21,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "metadata": { "id": "3eI6DUic-6jo" }, @@ -60,45 +60,45 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 5, "metadata": { "id": "LkaimNJfYZ2w", "colab": { "base_uri": "https://localhost:8080/" }, - "outputId": "71b7e574-5244-40e8-e72d-cdb338d0340f" + "outputId": "1b48a6c0-57a2-4d71-ee2c-702652d5547d" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m2.8/2.8 MB\u001b[0m \u001b[31m17.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25l \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m0.0/2.8 MB\u001b[0m \u001b[31m?\u001b[0m eta \u001b[36m-:--:--\u001b[0m\r\u001b[2K \u001b[91m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[91m╸\u001b[0m \u001b[32m2.8/2.8 MB\u001b[0m \u001b[31m151.3 MB/s\u001b[0m eta \u001b[36m0:00:01\u001b[0m\r\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m2.8/2.8 MB\u001b[0m \u001b[31m74.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[?25h Preparing metadata (setup.py) ... \u001b[?25l\u001b[?25hdone\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m149.3/149.3 kB\u001b[0m \u001b[31m5.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m491.2/491.2 kB\u001b[0m \u001b[31m38.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m467.8/467.8 kB\u001b[0m \u001b[31m39.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m68.7/68.7 kB\u001b[0m \u001b[31m7.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m116.3/116.3 kB\u001b[0m \u001b[31m13.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m183.9/183.9 kB\u001b[0m \u001b[31m18.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m161.7/161.7 kB\u001b[0m \u001b[31m16.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m143.5/143.5 kB\u001b[0m \u001b[31m14.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m44.4/44.4 kB\u001b[0m \u001b[31m4.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m363.4/363.4 MB\u001b[0m \u001b[31m1.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m13.8/13.8 MB\u001b[0m \u001b[31m123.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m24.6/24.6 MB\u001b[0m \u001b[31m90.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m883.7/883.7 kB\u001b[0m \u001b[31m57.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m664.8/664.8 MB\u001b[0m \u001b[31m1.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m211.5/211.5 MB\u001b[0m \u001b[31m5.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m56.3/56.3 MB\u001b[0m \u001b[31m12.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m127.9/127.9 MB\u001b[0m \u001b[31m7.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m207.5/207.5 MB\u001b[0m \u001b[31m6.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m21.1/21.1 MB\u001b[0m \u001b[31m43.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m7.6/7.6 MB\u001b[0m \u001b[31m88.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m194.8/194.8 kB\u001b[0m \u001b[31m18.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m3.1/3.1 MB\u001b[0m \u001b[31m83.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.2/1.2 MB\u001b[0m \u001b[31m59.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m65.6/65.6 kB\u001b[0m \u001b[31m6.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m149.3/149.3 kB\u001b[0m \u001b[31m14.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m491.2/491.2 kB\u001b[0m \u001b[31m32.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m467.8/467.8 kB\u001b[0m \u001b[31m32.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m68.7/68.7 kB\u001b[0m \u001b[31m6.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m116.3/116.3 kB\u001b[0m \u001b[31m10.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m183.9/183.9 kB\u001b[0m \u001b[31m16.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m161.7/161.7 kB\u001b[0m \u001b[31m15.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m143.5/143.5 kB\u001b[0m \u001b[31m9.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m44.4/44.4 kB\u001b[0m \u001b[31m3.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m363.4/363.4 MB\u001b[0m \u001b[31m4.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m13.8/13.8 MB\u001b[0m \u001b[31m130.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m24.6/24.6 MB\u001b[0m \u001b[31m94.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m883.7/883.7 kB\u001b[0m \u001b[31m56.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m664.8/664.8 MB\u001b[0m \u001b[31m2.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m211.5/211.5 MB\u001b[0m \u001b[31m5.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m56.3/56.3 MB\u001b[0m \u001b[31m13.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m127.9/127.9 MB\u001b[0m \u001b[31m7.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m207.5/207.5 MB\u001b[0m \u001b[31m5.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m21.1/21.1 MB\u001b[0m \u001b[31m97.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m7.6/7.6 MB\u001b[0m \u001b[31m101.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m194.8/194.8 kB\u001b[0m \u001b[31m16.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m3.1/3.1 MB\u001b[0m \u001b[31m83.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.2/1.2 MB\u001b[0m \u001b[31m57.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m65.6/65.6 kB\u001b[0m \u001b[31m4.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[?25h Building wheel for mitdeeplearning (setup.py) ... \u001b[?25l\u001b[?25hdone\n", "\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\n", "gcsfs 2025.3.2 requires fsspec==2025.3.2, but you have fsspec 2024.12.0 which is incompatible.\u001b[0m\u001b[31m\n", @@ -135,13 +135,13 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 6, "metadata": { "id": "tFxztZQInlAB", "colab": { "base_uri": "https://localhost:8080/" }, - "outputId": "ecbaec58-c358-41c9-9218-8e907824ba99" + "outputId": "c2cc817a-285e-4bfe-a2a1-f41369cfd57a" }, "outputs": [ { @@ -172,13 +172,13 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 7, "metadata": { "id": "oaHXABe8oPcO", "colab": { "base_uri": "https://localhost:8080/" }, - "outputId": "aa742fc3-c8c4-46c9-a50a-05bb25dbba22" + "outputId": "da0fc9fd-db07-4527-c302-cc063eb1277d" }, "outputs": [ { @@ -209,13 +209,13 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 8, "metadata": { "id": "tFeBBe1IouS3", "colab": { "base_uri": "https://localhost:8080/" }, - "outputId": "135dc2a3-dcd2-40b0-aa52-ae979e102e7c" + "outputId": "667b62a7-a72c-4da1-d597-c83d4d29388d" }, "outputs": [ { @@ -257,13 +257,13 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 9, "metadata": { "id": "FhaufyObuLEG", "colab": { "base_uri": "https://localhost:8080/" }, - "outputId": "0b9cfb28-4420-4c52-84b2-eb1fdfbc9ae9" + "outputId": "87e7355a-e439-44ce-d26d-259dbce7e7ca" }, "outputs": [ { @@ -301,13 +301,13 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 10, "metadata": { "id": "X_YJrZsxYZ2z", "colab": { "base_uri": "https://localhost:8080/" }, - "outputId": "2c220cd7-4e65-4f17-a583-0b6fb9e3ece7" + "outputId": "82891b74-0e4f-4711-87d8-4d1815b5d72e" }, "outputs": [ { @@ -350,7 +350,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 11, "metadata": { "id": "PJnfzpWyYZ23", "scrolled": true @@ -379,13 +379,13 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 12, "metadata": { "id": "pnwsf8w2uF7p", "colab": { "base_uri": "https://localhost:8080/" }, - "outputId": "c83ccda7-6fad-4cb0-fa48-0338fc27e09c" + "outputId": "58927566-5747-48b3-ea90-5f983d6a5f78" }, "outputs": [ { @@ -434,7 +434,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 13, "metadata": { "id": "HutbJk-1kHPh" }, @@ -474,13 +474,13 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 14, "metadata": { "id": "2yxjCPa69hV_", "colab": { "base_uri": "https://localhost:8080/" }, - "outputId": "615f0909-9aad-4d33-e784-7bfdb0655178" + "outputId": "b656a3e8-6fa6-456a-b062-c5c42259719d" }, "outputs": [ { @@ -489,7 +489,7 @@ "text": [ "input shape: torch.Size([1, 2])\n", "output shape: torch.Size([1, 3])\n", - "output result: tensor([[0.1113, 0.9772, 0.1567]], grad_fn=)\n" + "output result: tensor([[0.5218, 0.0543, 0.9727]], grad_fn=)\n" ] } ], @@ -519,7 +519,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 17, "metadata": { "id": "7WXTpmoL6TDz" }, @@ -534,7 +534,9 @@ "# Define the model\n", "'''TODO: Use the Sequential API to define a neural network with a\n", " single linear (dense!) layer, followed by non-linearity to compute z'''\n", - "model = nn.Sequential( ''' TODO ''' )\n" + "model = nn.Sequential(nn.Linear(n_input_nodes, n_output_nodes),\n", + " nn.Sigmoid())\n", + "\n" ] }, { @@ -548,11 +550,25 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 18, "metadata": { - "id": "zKhp6XqCFFa0" + "id": "zKhp6XqCFFa0", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "9e885b6d-8171-4cc8-da35-2b129849619c" }, - "outputs": [], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "input shape: torch.Size([1, 2])\n", + "output shape: torch.Size([1, 3])\n", + "output result: tensor([[0.5218, 0.0543, 0.9727]], grad_fn=)\n" + ] + } + ], "source": [ "# Test the model with example input\n", "x_input = torch.tensor([[1, 2.]])\n", From c9c3595ff0d07d80b0ff9bc1b614a0b3a5001ff4 Mon Sep 17 00:00:00 2001 From: Thiksiga <121288510+Thiksiga@users.noreply.github.com> Date: Wed, 23 Apr 2025 16:01:09 +0530 Subject: [PATCH 5/8] Created using Colab --- lab1/PT_Part1_Intro.ipynb | 203 +++++++++++++++++++++++++------------- 1 file changed, 135 insertions(+), 68 deletions(-) diff --git a/lab1/PT_Part1_Intro.ipynb b/lab1/PT_Part1_Intro.ipynb index 2d528027..60fe63c0 100644 --- a/lab1/PT_Part1_Intro.ipynb +++ b/lab1/PT_Part1_Intro.ipynb @@ -21,7 +21,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 1, "metadata": { "id": "3eI6DUic-6jo" }, @@ -60,45 +60,45 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 2, "metadata": { "id": "LkaimNJfYZ2w", "colab": { "base_uri": "https://localhost:8080/" }, - "outputId": "1b48a6c0-57a2-4d71-ee2c-702652d5547d" + "outputId": "b8e2f3c0-c4b4-49e9-8570-0271ad6bb064" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ - "\u001b[?25l \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m0.0/2.8 MB\u001b[0m \u001b[31m?\u001b[0m eta \u001b[36m-:--:--\u001b[0m\r\u001b[2K \u001b[91m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[91m╸\u001b[0m \u001b[32m2.8/2.8 MB\u001b[0m \u001b[31m151.3 MB/s\u001b[0m eta \u001b[36m0:00:01\u001b[0m\r\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m2.8/2.8 MB\u001b[0m \u001b[31m74.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25l \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m0.0/2.8 MB\u001b[0m \u001b[31m?\u001b[0m eta \u001b[36m-:--:--\u001b[0m\r\u001b[2K \u001b[91m━━━━━━━━\u001b[0m\u001b[90m╺\u001b[0m\u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m0.6/2.8 MB\u001b[0m \u001b[31m18.0 MB/s\u001b[0m eta \u001b[36m0:00:01\u001b[0m\r\u001b[2K \u001b[91m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[91m╸\u001b[0m \u001b[32m2.8/2.8 MB\u001b[0m \u001b[31m55.7 MB/s\u001b[0m eta \u001b[36m0:00:01\u001b[0m\r\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m2.8/2.8 MB\u001b[0m \u001b[31m38.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[?25h Preparing metadata (setup.py) ... \u001b[?25l\u001b[?25hdone\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m149.3/149.3 kB\u001b[0m \u001b[31m14.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m491.2/491.2 kB\u001b[0m \u001b[31m32.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m467.8/467.8 kB\u001b[0m \u001b[31m32.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m68.7/68.7 kB\u001b[0m \u001b[31m6.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m116.3/116.3 kB\u001b[0m \u001b[31m10.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m183.9/183.9 kB\u001b[0m \u001b[31m16.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m161.7/161.7 kB\u001b[0m \u001b[31m15.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m143.5/143.5 kB\u001b[0m \u001b[31m9.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m44.4/44.4 kB\u001b[0m \u001b[31m3.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m363.4/363.4 MB\u001b[0m \u001b[31m4.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m13.8/13.8 MB\u001b[0m \u001b[31m130.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m24.6/24.6 MB\u001b[0m \u001b[31m94.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m883.7/883.7 kB\u001b[0m \u001b[31m56.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m664.8/664.8 MB\u001b[0m \u001b[31m2.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m149.3/149.3 kB\u001b[0m \u001b[31m4.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m491.2/491.2 kB\u001b[0m \u001b[31m38.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m473.7/473.7 kB\u001b[0m \u001b[31m39.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m68.7/68.7 kB\u001b[0m \u001b[31m6.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m116.3/116.3 kB\u001b[0m \u001b[31m11.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m183.9/183.9 kB\u001b[0m \u001b[31m18.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m161.7/161.7 kB\u001b[0m \u001b[31m15.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m143.5/143.5 kB\u001b[0m \u001b[31m13.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m44.4/44.4 kB\u001b[0m \u001b[31m4.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m363.4/363.4 MB\u001b[0m \u001b[31m3.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m13.8/13.8 MB\u001b[0m \u001b[31m88.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m24.6/24.6 MB\u001b[0m \u001b[31m69.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m883.7/883.7 kB\u001b[0m \u001b[31m49.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m664.8/664.8 MB\u001b[0m \u001b[31m1.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m211.5/211.5 MB\u001b[0m \u001b[31m5.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m56.3/56.3 MB\u001b[0m \u001b[31m13.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m127.9/127.9 MB\u001b[0m \u001b[31m7.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m207.5/207.5 MB\u001b[0m \u001b[31m5.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m21.1/21.1 MB\u001b[0m \u001b[31m97.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m7.6/7.6 MB\u001b[0m \u001b[31m101.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m194.8/194.8 kB\u001b[0m \u001b[31m16.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m3.1/3.1 MB\u001b[0m \u001b[31m83.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.2/1.2 MB\u001b[0m \u001b[31m57.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m65.6/65.6 kB\u001b[0m \u001b[31m4.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m56.3/56.3 MB\u001b[0m \u001b[31m13.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m127.9/127.9 MB\u001b[0m \u001b[31m7.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m207.5/207.5 MB\u001b[0m \u001b[31m5.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m21.1/21.1 MB\u001b[0m \u001b[31m70.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m7.6/7.6 MB\u001b[0m \u001b[31m82.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m194.8/194.8 kB\u001b[0m \u001b[31m17.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m3.1/3.1 MB\u001b[0m \u001b[31m82.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.2/1.2 MB\u001b[0m \u001b[31m57.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m65.6/65.6 kB\u001b[0m \u001b[31m5.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[?25h Building wheel for mitdeeplearning (setup.py) ... \u001b[?25l\u001b[?25hdone\n", "\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\n", "gcsfs 2025.3.2 requires fsspec==2025.3.2, but you have fsspec 2024.12.0 which is incompatible.\u001b[0m\u001b[31m\n", @@ -135,13 +135,13 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 3, "metadata": { "id": "tFxztZQInlAB", "colab": { "base_uri": "https://localhost:8080/" }, - "outputId": "c2cc817a-285e-4bfe-a2a1-f41369cfd57a" + "outputId": "a27f35c7-d98e-469c-b8f8-a285f820d054" }, "outputs": [ { @@ -172,13 +172,13 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 4, "metadata": { "id": "oaHXABe8oPcO", "colab": { "base_uri": "https://localhost:8080/" }, - "outputId": "da0fc9fd-db07-4527-c302-cc063eb1277d" + "outputId": "64ddfde9-1f58-429d-bf49-3d50f9217426" }, "outputs": [ { @@ -209,13 +209,13 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 5, "metadata": { "id": "tFeBBe1IouS3", "colab": { "base_uri": "https://localhost:8080/" }, - "outputId": "667b62a7-a72c-4da1-d597-c83d4d29388d" + "outputId": "ceb0ff50-40a5-44d0-9464-c6aa3c73e7bf" }, "outputs": [ { @@ -257,13 +257,13 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 6, "metadata": { "id": "FhaufyObuLEG", "colab": { "base_uri": "https://localhost:8080/" }, - "outputId": "87e7355a-e439-44ce-d26d-259dbce7e7ca" + "outputId": "dd074100-d17c-475c-b3b6-d4ea274387b9" }, "outputs": [ { @@ -301,13 +301,13 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 7, "metadata": { "id": "X_YJrZsxYZ2z", "colab": { "base_uri": "https://localhost:8080/" }, - "outputId": "82891b74-0e4f-4711-87d8-4d1815b5d72e" + "outputId": "83b3cb23-0a03-422b-d6c7-4ed75aa24dc5" }, "outputs": [ { @@ -350,7 +350,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 8, "metadata": { "id": "PJnfzpWyYZ23", "scrolled": true @@ -379,13 +379,13 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 9, "metadata": { "id": "pnwsf8w2uF7p", "colab": { "base_uri": "https://localhost:8080/" }, - "outputId": "58927566-5747-48b3-ea90-5f983d6a5f78" + "outputId": "120152a4-415b-4206-8b30-849c33e87888" }, "outputs": [ { @@ -434,7 +434,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 10, "metadata": { "id": "HutbJk-1kHPh" }, @@ -474,13 +474,13 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 11, "metadata": { "id": "2yxjCPa69hV_", "colab": { "base_uri": "https://localhost:8080/" }, - "outputId": "b656a3e8-6fa6-456a-b062-c5c42259719d" + "outputId": "54c191d4-fb3b-48f6-ff18-0418850db3cb" }, "outputs": [ { @@ -489,7 +489,7 @@ "text": [ "input shape: torch.Size([1, 2])\n", "output shape: torch.Size([1, 3])\n", - "output result: tensor([[0.5218, 0.0543, 0.9727]], grad_fn=)\n" + "output result: tensor([[0.2564, 0.9930, 0.5109]], grad_fn=)\n" ] } ], @@ -519,7 +519,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 12, "metadata": { "id": "7WXTpmoL6TDz" }, @@ -550,13 +550,13 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 13, "metadata": { "id": "zKhp6XqCFFa0", "colab": { "base_uri": "https://localhost:8080/" }, - "outputId": "9e885b6d-8171-4cc8-da35-2b129849619c" + "outputId": "f54f24db-914f-435f-8859-b4db7a2f2ba9" }, "outputs": [ { @@ -565,7 +565,7 @@ "text": [ "input shape: torch.Size([1, 2])\n", "output shape: torch.Size([1, 3])\n", - "output result: tensor([[0.5218, 0.0543, 0.9727]], grad_fn=)\n" + "output result: tensor([[0.2564, 0.9930, 0.5109]], grad_fn=)\n" ] } ], @@ -591,7 +591,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 14, "metadata": { "id": "K4aCflPVyViD" }, @@ -603,8 +603,8 @@ " def __init__(self, num_inputs, num_outputs):\n", " super(LinearWithSigmoidActivation, self).__init__()\n", " '''TODO: define a model with a single Linear layer and sigmoid activation.'''\n", - " self.linear = '''TODO: linear layer'''\n", - " self.activation = '''TODO: sigmoid activation'''\n", + " self.linear = nn.Linear(num_inputs, num_outputs)#'''TODO: linear layer'''\n", + " self.activation = nn.Sigmoid()#'''TODO: sigmoid activation'''\n", "\n", " def forward(self, inputs):\n", " linear_output = self.linear(inputs)\n", @@ -623,11 +623,25 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 15, "metadata": { - "id": "V-eNhSyRG6hl" + "id": "V-eNhSyRG6hl", + "outputId": "7dd8d229-21d3-4887-cf34-04313e9b7808", + "colab": { + "base_uri": "https://localhost:8080/" + } }, - "outputs": [], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "input shape: torch.Size([1, 2])\n", + "output shape: torch.Size([1, 3])\n", + "output result: tensor([[0.5238, 0.7890, 0.6917]], grad_fn=)\n" + ] + } + ], "source": [ "n_input_nodes = 2\n", "n_output_nodes = 3\n", @@ -650,7 +664,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 16, "metadata": { "id": "P7jzGX5D1xT5" }, @@ -666,7 +680,11 @@ " '''TODO: Implement the behavior where the network outputs the input, unchanged,\n", " under control of the isidentity argument.'''\n", " def forward(self, inputs, isidentity=False):\n", - " ''' TODO '''\n" + " ''' TODO '''\n", + " if isidentity:\n", + " return inputs\n", + " else:\n", + " return self.linear(inputs)\n" ] }, { @@ -680,20 +698,34 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 17, "metadata": { - "id": "NzC0mgbk5dp2" + "id": "NzC0mgbk5dp2", + "outputId": "e05b8127-a429-4c69-c769-99e20472c969", + "colab": { + "base_uri": "https://localhost:8080/" + } }, - "outputs": [], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "input: tensor([[1., 2.]])\n", + "Network linear output: tensor([[ 0.3664, 0.3014, -1.6501]], grad_fn=); network identity output: tensor([[1., 2.]])\n" + ] + } + ], "source": [ "# Test the IdentityModel\n", "model = LinearButSometimesIdentity(num_inputs=2, num_outputs=3)\n", "x_input = torch.tensor([[1, 2.]])\n", "\n", "'''TODO: pass the input into the model and call with and without the input identity option.'''\n", - "out_with_linear = # TODO\n", + "out_with_linear =model(x_input, isidentity=False) # TODO\n", + "\n", "\n", - "out_with_identity = # TODO\n", + "out_with_identity = model(x_input, isidentity=True)# TODO\n", "\n", "print(f\"input: {x_input}\")\n", "print(\"Network linear output: {}; network identity output: {}\".format(out_with_linear, out_with_identity))" @@ -725,11 +757,23 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 18, "metadata": { - "id": "tdkqk8pw5yJM" + "id": "tdkqk8pw5yJM", + "outputId": "04d7ae0c-e475-47b1-811f-35b8fb43d1e2", + "colab": { + "base_uri": "https://localhost:8080/" + } }, - "outputs": [], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "dy_dx of y=x^2 at x=3.0 is: tensor(6.)\n" + ] + } + ], "source": [ "### Gradient computation ###\n", "\n", @@ -755,7 +799,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 19, "metadata": { "attributes": { "classes": [ @@ -763,9 +807,32 @@ ], "id": "" }, - "id": "7g1yWiSXqEf-" + "id": "7g1yWiSXqEf-", + "outputId": "b3b20c81-cba4-4beb-c2a3-b3b05f24fc0c", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 466 + } }, - "outputs": [], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Initializing x=-1.2292821407318115\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "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4H3//fd67733tHjxYo0ZM0aS1L17d/f+hq6qpKQkxcXFSXK17Dz99NP66quvlJmZ6X7Ot99+q1deeUWjRo3S7NmzdcEFF+i5556TJPXu3Vs5OTl65plnPHjWzoxQ42H7CTUAYJrw0GBt+/NY0967OT799FNFRUWptrZWTqdTt956qx5//HFNnjxZAwYMaDSOZtOmTdq9e7eio6MbvUZ1dbX27Nmj0tJSFRQUaMSIEe59ISEhGjZs2Fm7xbKzsxUcHKxRo0Y1uebdu3erqqpKV155ZaPtNTU1Gjx4sCRp+/btjeqQ5A5A3kao8bD99d1P3ToyngYA2prFYmlVF1BbuuyyyzR79mxZrValpqYqJORk3ZGRjX9DKioqNHToUL399tunvU5iYmKL3r+hO6k5Kipcs3sXLlyozp07N9pns9laVIcn+cc370f2H6OlBgBwfpGRkerRo0eTjh0yZIjeffddJSUlKSYm5ozHpKSkaPXq1br00kslSXV1dVq/fr2GDBlyxuMHDBggp9Op5cuXu7uffqihpcjhcLi39evXTzabTXl5eWdt4enbt68++eSTRtu+++67839ID2D2k4e5W2riaakBAHjGhAkTlJCQoPHjx+ubb75Rbm6uli1bpv/8z//UgQMHJEkPPPCAZs6cqQULFmjHjh26//77z7nGTHp6uiZOnKhf/epXWrBggfs133vvPUlSt27dZLFY9Omnn+rIkSOqqKhQdHS0HnzwQf32t7/VvHnztGfPHm3YsEEvvfSS5s2bJ0m69957tWvXLj300EPauXOn3nnnHc2dO9fbp0gSocajKux1Kq6okSR1paUGAOAhERERWrFihbp27aobb7xRffv21V133aXq6mp3y8306dN1++23a+LEicrMzFR0dLRuuOGGc77u7Nmz9fOf/1z333+/+vTpo7vvvluVla7/c965c2c98cQTevjhh9WpUydNmTJFkvSXv/xFjzzyiLKystS3b19dffXVWrhwoTIyMiRJXbt21QcffKAFCxZo0KBBmjNnjp5++mkvnp2TLEZzJ9b7sbKyMsXGxqq0tPSszXetse1Qma558Rt1iAjVxkev8vjrAwBOqq6uVm5urjIyMhQWFmZ2OWilc32fTf39pqXGgxgkDACAeQg1HsQgYQAAzEOo8SD3GjXxhBoAANoaocaD6H4CAMA8hBoPYjVh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6d1PeXl5Gj9+vKKiohQTE6ObbrpJhw8fdu9//PHHddFFF+nNN99Uenq6YmNj9ctf/lLl5eXePWkAmo1QA8DrZs2apczMTN19990qKChQQUGB0tLSVFJSossvv1yDBw/WunXrtGjRIh0+fFg33XRTo+fPmzdPVqtVK1eu1Jw5cyRJQUFBevHFF7V161bNmzdPX3/9tX73u99JkkaOHKkXXnhBMTEx7vd78MEHT6vL6XRq/PjxOnbsmJYvX67Fixdr7969uvnmmxsdt2fPHi1YsECffvqpPv30Uy1fvlwzZ8700tkC0FJ0PwHwutjYWFmtVkVERCg5Odm9/a9//asGDx6sp59+2r3ttddeU1pamr7//nv16tVLktSzZ0/913/9V6PX/OH4nPT0dD355JO699579be//U1Wq1WxsbGyWCyN3u9US5YsUU5OjnJzc5WWliZJeuONN3ThhRdq7dq1uvjiiyW5ws/cuXMVHR0tSbr99tu1ZMkSPfXUU607MQA8ipYaAKbZtGmTli5dqqioKPetT58+klytIw2GDh162nO/+uorXXHFFercubOio6N1++236+jRo6qqqmry+2/fvl1paWnuQCNJ/fr1U1xcnLZv3+7elp6e7g40kpSSkqKioqJmfVYA3kdLDQDTVFRU6LrrrtMzzzxz2r6UlBT3/cjIyEb79u3bp//4j//Qfffdp6eeekrx8fH69ttvddddd6mmpkYREREerTM0NLTRY4vFIqfT6dH3ANB6hBoAbcJqtcrhcDTaNmTIEH3wwQdKT09XSEjT/zlav369nE6nnnvuOQUFuRqc33vvvfO+36n69u2r/Px85efnu1trtm3bppKSEvXr16/J9QDwDXQ/AWgT6enpWr16tfbt26fi4mI5nU5NnjxZx44d0y233KK1a9dqz549+uKLL3TnnXeeM5D06NFDtbW1eumll7R37169+eab7gHEP3y/iooKLVmyRMXFxWfslhozZowGDBigCRMmaMOGDVqzZo3uuOMOjRo1SsOGDfP4OQDgXYQaAG3iwQcfVHBwsPr166fExETl5eUpNTVVK1eulMPh0FVXXaUBAwZo6tSpiouLc7fAnMmgQYP0/PPP65lnnlH//v319ttvKysrq9ExI0eO1L333qubb75ZiYmJpw00llzdSB9//LE6dOigSy+9VGPGjFH37t317rvvevzzA/A+i2EYhtlFAAAAtBYtNQAAICAQagAAQEAg1AAAgIBAqAEAAAGBUAMAAAICoQYAAAQEQg0AAAgIhBoAABAQCDUAACAgEGoAAEBAINQAAICA8P8BWb3pYcmGTgQAAAAASUVORK5CYII=\n" + }, + "metadata": {} + } + ], "source": [ "### Function minimization with autograd and gradient descent ###\n", "\n", @@ -784,7 +851,7 @@ " x = torch.tensor([x], requires_grad=True)\n", "\n", " # TODO: Compute the loss as the square of the difference between x and x_f\n", - " loss = # TODO\n", + " loss = (x - x_f) ** 2 # TODO\n", "\n", " # Backpropagate through the loss to compute gradients\n", " loss.backward()\n", From 45d5dce9cbc5982e96537fe078b236879308ecea Mon Sep 17 00:00:00 2001 From: Thiksiga <121288510+Thiksiga@users.noreply.github.com> Date: Wed, 23 Apr 2025 16:17:27 +0530 Subject: [PATCH 6/8] Create my_experience_lab1_intro.md --- lab1/my_experience_lab1.md | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 lab1/my_experience_lab1.md diff --git a/lab1/my_experience_lab1.md b/lab1/my_experience_lab1.md new file mode 100644 index 00000000..d908cbc3 --- /dev/null +++ b/lab1/my_experience_lab1.md @@ -0,0 +1,10 @@ +# My Reflections on Lab1_intro + +This notebook was my introduction to the PyTorch framework. It covers: + +- Core functionalities of PyTorch and its role in deep learning. +- Building models using built-in layers and custom modules. +- Practical implementation of forward passes using object-oriented design. +- Understanding and applying backpropagation using `autograd` and updating parameters via `SGD`. + +These exercises significantly improved my practical understanding of PyTorch internals and gave me confidence in customizing and training models from scratch. From 46cde2701d887c8071d438735cdf418af94b35d8 Mon Sep 17 00:00:00 2001 From: Thiksiga <121288510+Thiksiga@users.noreply.github.com> Date: Wed, 23 Apr 2025 16:22:19 +0530 Subject: [PATCH 7/8] Created using Colab --- lab1/PT_Part1_Intro.ipynb | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/lab1/PT_Part1_Intro.ipynb b/lab1/PT_Part1_Intro.ipynb index 60fe63c0..f898c44c 100644 --- a/lab1/PT_Part1_Intro.ipynb +++ b/lab1/PT_Part1_Intro.ipynb @@ -626,10 +626,10 @@ "execution_count": 15, "metadata": { "id": "V-eNhSyRG6hl", - "outputId": "7dd8d229-21d3-4887-cf34-04313e9b7808", "colab": { "base_uri": "https://localhost:8080/" - } + }, + "outputId": "7dd8d229-21d3-4887-cf34-04313e9b7808" }, "outputs": [ { @@ -701,10 +701,10 @@ "execution_count": 17, "metadata": { "id": "NzC0mgbk5dp2", - "outputId": "e05b8127-a429-4c69-c769-99e20472c969", "colab": { "base_uri": "https://localhost:8080/" - } + }, + "outputId": "e05b8127-a429-4c69-c769-99e20472c969" }, "outputs": [ { @@ -760,10 +760,10 @@ "execution_count": 18, "metadata": { "id": "tdkqk8pw5yJM", - "outputId": "04d7ae0c-e475-47b1-811f-35b8fb43d1e2", "colab": { "base_uri": "https://localhost:8080/" - } + }, + "outputId": "04d7ae0c-e475-47b1-811f-35b8fb43d1e2" }, "outputs": [ { @@ -808,11 +808,11 @@ "id": "" }, "id": "7g1yWiSXqEf-", - "outputId": "b3b20c81-cba4-4beb-c2a3-b3b05f24fc0c", "colab": { "base_uri": "https://localhost:8080/", "height": 466 - } + }, + "outputId": "b3b20c81-cba4-4beb-c2a3-b3b05f24fc0c" }, "outputs": [ { From b21cfaf642cd3ac17a4bee03f3ccdb4b72522f50 Mon Sep 17 00:00:00 2001 From: Thiksiga <121288510+Thiksiga@users.noreply.github.com> Date: Sat, 26 Apr 2025 11:01:33 +0530 Subject: [PATCH 8/8] Created using Colab --- lab1/PT_Part2_Music_Generation.ipynb | 171 ++++++++++++++++++++++++--- 1 file changed, 153 insertions(+), 18 deletions(-) diff --git a/lab1/PT_Part2_Music_Generation.ipynb b/lab1/PT_Part2_Music_Generation.ipynb index a99bca7d..7cdf6f7b 100644 --- a/lab1/PT_Part2_Music_Generation.ipynb +++ b/lab1/PT_Part2_Music_Generation.ipynb @@ -66,16 +66,57 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "metadata": { - "id": "riVZCVK65QTH" + "id": "riVZCVK65QTH", + "outputId": "8e884c8e-8788-4ac4-84b9-3eb7eb155cee", + "colab": { + "base_uri": "https://localhost:8080/" + } }, - "outputs": [], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "\u001b[?25l \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m0.0/2.8 MB\u001b[0m \u001b[31m?\u001b[0m eta \u001b[36m-:--:--\u001b[0m\r\u001b[2K \u001b[91m━━━━━━\u001b[0m\u001b[90m╺\u001b[0m\u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m0.5/2.8 MB\u001b[0m \u001b[31m13.6 MB/s\u001b[0m eta \u001b[36m0:00:01\u001b[0m\r\u001b[2K \u001b[91m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[91m╸\u001b[0m \u001b[32m2.8/2.8 MB\u001b[0m \u001b[31m50.6 MB/s\u001b[0m eta \u001b[36m0:00:01\u001b[0m\r\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m2.8/2.8 MB\u001b[0m \u001b[31m40.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25h Preparing metadata (setup.py) ... \u001b[?25l\u001b[?25hdone\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m149.3/149.3 kB\u001b[0m \u001b[31m14.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m491.2/491.2 kB\u001b[0m \u001b[31m34.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m473.7/473.7 kB\u001b[0m \u001b[31m33.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m68.7/68.7 kB\u001b[0m \u001b[31m6.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m116.3/116.3 kB\u001b[0m \u001b[31m11.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m183.9/183.9 kB\u001b[0m \u001b[31m14.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m161.7/161.7 kB\u001b[0m \u001b[31m16.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m143.5/143.5 kB\u001b[0m \u001b[31m14.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m44.4/44.4 kB\u001b[0m \u001b[31m4.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m363.4/363.4 MB\u001b[0m \u001b[31m4.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m13.8/13.8 MB\u001b[0m \u001b[31m68.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m24.6/24.6 MB\u001b[0m \u001b[31m36.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m883.7/883.7 kB\u001b[0m \u001b[31m48.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m664.8/664.8 MB\u001b[0m \u001b[31m1.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m211.5/211.5 MB\u001b[0m \u001b[31m6.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m56.3/56.3 MB\u001b[0m \u001b[31m13.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m127.9/127.9 MB\u001b[0m \u001b[31m7.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m207.5/207.5 MB\u001b[0m \u001b[31m5.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m21.1/21.1 MB\u001b[0m \u001b[31m105.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m7.6/7.6 MB\u001b[0m \u001b[31m117.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m194.8/194.8 kB\u001b[0m \u001b[31m19.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m3.1/3.1 MB\u001b[0m \u001b[31m97.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.2/1.2 MB\u001b[0m \u001b[31m74.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m65.6/65.6 kB\u001b[0m \u001b[31m6.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25h Building wheel for mitdeeplearning (setup.py) ... \u001b[?25l\u001b[?25hdone\n", + "\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\n", + "gcsfs 2025.3.2 requires fsspec==2025.3.2, but you have fsspec 2024.12.0 which is incompatible.\u001b[0m\u001b[31m\n", + "\u001b[0m" + ] + } + ], "source": [ "!pip install comet_ml > /dev/null 2>&1\n", "import comet_ml\n", "# TODO: ENTER YOUR API KEY HERE!! instructions above\n", - "COMET_API_KEY = \"\"\n", + "COMET_API_KEY = \"kSZkBDGNQbrbDE7otywXgXJlX\"\n", "\n", "# Import PyTorch and other relevant libraries\n", "import torch\n", @@ -119,11 +160,35 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "metadata": { - "id": "P7dFnP5q3Jve" + "id": "P7dFnP5q3Jve", + "outputId": "13350a71-1007-4a06-ae67-40d20698951b", + "colab": { + "base_uri": "https://localhost:8080/" + } }, - "outputs": [], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Found 817 songs in text\n", + "\n", + "Example song: \n", + "X:1\n", + "T:Alexander's\n", + "Z: id:dc-hornpipe-1\n", + "M:C|\n", + "L:1/8\n", + "K:D Major\n", + "(3ABc|dAFA DFAd|fdcd FAdf|gfge fefd|(3efe (3dcB A2 (3ABc|!\n", + "dAFA DFAd|fdcd FAdf|gfge fefd|(3efe dc d2:|!\n", + "AG|FAdA FAdA|GBdB GBdB|Acec Acec|dfaf gecA|!\n", + "FAdA FAdA|GBdB GBdB|Aceg fefd|(3efe dc d2:|!\n" + ] + } + ], "source": [ "# Download the dataset\n", "songs = mdl.lab1.load_training_data()\n", @@ -145,11 +210,35 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "metadata": { - "id": "11toYzhEEKDz" + "id": "11toYzhEEKDz", + "outputId": "bb038d16-1138-4b46-c966-82f96e52655a", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 76 + } }, - "outputs": [], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ], + "text/html": [ + "\n", + " \n", + " " + ] + }, + "metadata": {}, + "execution_count": 3 + } + ], "source": [ "# Convert the ABC notation to audio file and listen to it\n", "mdl.lab1.play_song(example_song)" @@ -166,11 +255,23 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "metadata": { - "id": "IlCgQBRVymwR" + "id": "IlCgQBRVymwR", + "outputId": "3604366e-c06d-41f9-ddcc-0534e785107f", + "colab": { + "base_uri": "https://localhost:8080/" + } }, - "outputs": [], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "There are 83 unique characters in the dataset\n" + ] + } + ], "source": [ "# Join our list of song strings into a single string containing all songs\n", "songs_joined = \"\\n\\n\".join(songs)\n", @@ -208,7 +309,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "metadata": { "id": "IalZLbvOzf-F" }, @@ -238,11 +339,45 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 6, "metadata": { - "id": "FYyNlCNXymwY" + "id": "FYyNlCNXymwY", + "outputId": "9b5bafae-91a0-4aa2-d6ae-ef59b92244cb", + "colab": { + "base_uri": "https://localhost:8080/" + } }, - "outputs": [], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "{\n", + " '\\n': 0,\n", + " ' ' : 1,\n", + " '!' : 2,\n", + " '\"' : 3,\n", + " '#' : 4,\n", + " \"'\" : 5,\n", + " '(' : 6,\n", + " ')' : 7,\n", + " ',' : 8,\n", + " '-' : 9,\n", + " '.' : 10,\n", + " '/' : 11,\n", + " '0' : 12,\n", + " '1' : 13,\n", + " '2' : 14,\n", + " '3' : 15,\n", + " '4' : 16,\n", + " '5' : 17,\n", + " '6' : 18,\n", + " '7' : 19,\n", + " ...\n", + "}\n" + ] + } + ], "source": [ "print('{')\n", "for char, _ in zip(char2idx, range(20)):\n", @@ -1049,4 +1184,4 @@ }, "nbformat": 4, "nbformat_minor": 0 -} +} \ No newline at end of file