From 2b3882cbba32421ec7b05aa37445b6cd70d0a5b9 Mon Sep 17 00:00:00 2001 From: Diane Adjavon Date: Mon, 26 Aug 2024 17:52:32 -0400 Subject: [PATCH 1/4] Remove erroneous text instructions --- assets/diff_class.png | Bin 0 -> 93934 bytes assets/same_class.png | Bin 0 -> 92646 bytes assets/same_class_diff_color.png | Bin 11402 -> 0 bytes assets/same_color_diff_class.png | Bin 9904 -> 0 bytes solution.py | 23 +++++++++++------------ 5 files changed, 11 insertions(+), 12 deletions(-) create mode 100644 assets/diff_class.png create mode 100644 assets/same_class.png delete mode 100644 assets/same_class_diff_color.png delete mode 100644 assets/same_color_diff_class.png diff --git a/assets/diff_class.png b/assets/diff_class.png new file mode 100644 index 0000000000000000000000000000000000000000..a74239537fd8a88cee88f4d117c03deac724dc8c GIT binary patch literal 93934 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%0AY8mc`DA*i8Fp!Sv|o*mb%ZzSN!Td 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 literal 0 HcmV?d00001 diff --git a/assets/same_class_diff_color.png b/assets/same_class_diff_color.png deleted file mode 100644 index c5d98c85873fad39c7689d4a626de1d325f8455e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11402 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 diff --git a/assets/same_color_diff_class.png b/assets/same_color_diff_class.png deleted file mode 100644 index 775ce42cba69e88dbb86aa841f7c83b853723378..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9904 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 # # %% [markdown] +# By now you will have hopefully noticed that it isn't the exact color of the image that determines its class, but that two images with a very similar color can be of different classes! +# +# Here are two examples of image-counterfactual-attribution triplets. +# You'll notice that they are *very* similar in every way! But one set is different classes, and one set is the same class! +# +# ![same_class](assets/same_class.png) +# ![diff_class](assets/diff_class.png) +# +# We are missing a crucial step of the explanation pipeline: a quantification of how the class changes over the interpolation. +# # In the lecture, we used the attribution to act as a mask, to gradually go from the original image to the counterfactual image. # This allowed us to classify all of the intermediate images, and learn how the class changed over the interpolation. # Here we have a much simpler task so we have some advantages: @@ -1053,17 +1063,6 @@ def visualize_color_attribution_and_counterfactual( # # %% [markdown] # # Part 5: Exploring the Style Space, finding the answer -# By now you will have hopefully noticed that it isn't the exact color of the image that determines its class, but that two images with a very similar color can be of different classes! -# -# Here is an example of two images that are very similar in color, but are of different classes. -# ![same_color_diff_class](assets/same_color_diff_class.png) -# While both of the images are yellow, the attribution tells us (if you squint!) that one of the yellows has slightly more blue in it! -# -# Conversely, here is an example of two images with very different colors, but that are of the same class: -# ![same_class_diff_color](assets/same_class_diff_color.png) -# Here the attribution is empty! Using the discriminative attribution we can see that the significant color change doesn't matter at all! -# -# # So color is important... but not always? What's going on!? # There is a final piece of information that we can use to solve the puzzle: the style space. # %% [markdown] From 7ddbb1104d49a3d56dc74c6358b0b7dd9528b77c Mon Sep 17 00:00:00 2001 From: adjavon Date: Mon, 26 Aug 2024 21:53:21 +0000 Subject: [PATCH 2/4] Commit from GitHub Actions (Build Notebooks) --- exercise.ipynb | 227 ++++++++++++++++++++++++------------------------ solution.ipynb | 231 ++++++++++++++++++++++++------------------------- 2 files changed, 228 insertions(+), 230 deletions(-) diff --git a/exercise.ipynb b/exercise.ipynb index 1f76626..4a0a4a5 100644 --- a/exercise.ipynb +++ b/exercise.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "2cec6e2e", + "id": "1b3bf19e", "metadata": { "lines_to_next_cell": 0, "tags": [] @@ -29,7 +29,7 @@ }, { "cell_type": "markdown", - "id": "c9faff54", + "id": "067e738b", "metadata": { "lines_to_next_cell": 0 }, @@ -41,7 +41,7 @@ }, { "cell_type": "markdown", - "id": "8b2714f2", + "id": "b913b71a", "metadata": {}, "source": [ "\n", @@ -54,7 +54,7 @@ { "cell_type": "code", "execution_count": null, - "id": "196887ff", + "id": "98283047", "metadata": { "lines_to_next_cell": 0 }, @@ -68,7 +68,7 @@ }, { "cell_type": "markdown", - "id": "dc029ece", + "id": "1afbe1b3", "metadata": { "lines_to_next_cell": 0 }, @@ -84,7 +84,7 @@ { "cell_type": "code", "execution_count": null, - "id": "3f76a8a6", + "id": "5bef908b", "metadata": {}, "outputs": [], "source": [ @@ -102,7 +102,7 @@ }, { "cell_type": "markdown", - "id": "9ec21db3", + "id": "3e27811b", "metadata": { "lines_to_next_cell": 0 }, @@ -113,7 +113,7 @@ }, { "cell_type": "markdown", - "id": "06793f28", + "id": "c554ff65", "metadata": { "lines_to_next_cell": 0 }, @@ -130,7 +130,7 @@ { "cell_type": "code", "execution_count": null, - "id": "1bc9ae08", + "id": "0f8465d5", "metadata": { "lines_to_next_cell": 0, "tags": [ @@ -155,7 +155,7 @@ }, { "cell_type": "markdown", - "id": "e0d3e182", + "id": "9460ef99", "metadata": { "lines_to_next_cell": 0 }, @@ -166,7 +166,7 @@ { "cell_type": "code", "execution_count": null, - "id": "0bd2cb1e", + "id": "e35f652a", "metadata": { "lines_to_next_cell": 0 }, @@ -195,7 +195,7 @@ }, { "cell_type": "markdown", - "id": "88a42af2", + "id": "714d0118", "metadata": { "lines_to_next_cell": 0 }, @@ -212,7 +212,7 @@ }, { "cell_type": "markdown", - "id": "72fbabcd", + "id": "2b3080ec", "metadata": {}, "source": [ "# Part 2: Using Integrated Gradients to find what the classifier knows\n", @@ -222,7 +222,7 @@ }, { "cell_type": "markdown", - "id": "5a41df80", + "id": "42bf258c", "metadata": {}, "source": [ "## Attributions through integrated gradients\n", @@ -235,7 +235,7 @@ { "cell_type": "code", "execution_count": null, - "id": "c7615db3", + "id": "9dc58dab", "metadata": { "tags": [] }, @@ -253,7 +253,7 @@ }, { "cell_type": "markdown", - "id": "f8bc4307", + "id": "50185c99", "metadata": { "tags": [] }, @@ -269,7 +269,7 @@ { "cell_type": "code", "execution_count": null, - "id": "36075e2c", + "id": "e960ab8b", "metadata": { "tags": [ "task" @@ -290,7 +290,7 @@ { "cell_type": "code", "execution_count": null, - "id": "8ebbe326", + "id": "eed52045", "metadata": { "tags": [] }, @@ -303,7 +303,7 @@ }, { "cell_type": "markdown", - "id": "2de7d44e", + "id": "be5a007b", "metadata": { "lines_to_next_cell": 2, "tags": [] @@ -315,7 +315,7 @@ { "cell_type": "code", "execution_count": null, - "id": "c484acb2", + "id": "5c0780f6", "metadata": { "tags": [] }, @@ -343,7 +343,7 @@ { "cell_type": "code", "execution_count": null, - "id": "898595ea", + "id": "30041689", "metadata": { "tags": [] }, @@ -356,7 +356,7 @@ }, { "cell_type": "markdown", - "id": "5b66372f", + "id": "c0d46960", "metadata": { "lines_to_next_cell": 2 }, @@ -370,7 +370,7 @@ }, { "cell_type": "markdown", - "id": "f26f6f42", + "id": "477cd87c", "metadata": { "lines_to_next_cell": 0 }, @@ -383,7 +383,7 @@ { "cell_type": "code", "execution_count": null, - "id": "69cf5669", + "id": "ed247a59", "metadata": {}, "outputs": [], "source": [ @@ -408,7 +408,7 @@ }, { "cell_type": "markdown", - "id": "9642568b", + "id": "746de08d", "metadata": { "lines_to_next_cell": 0 }, @@ -422,7 +422,7 @@ }, { "cell_type": "markdown", - "id": "2891c43d", + "id": "8c5ea46b", "metadata": {}, "source": [ "\n", @@ -448,7 +448,7 @@ }, { "cell_type": "markdown", - "id": "357966b5", + "id": "eaacace4", "metadata": {}, "source": [ "

Task 2.3: Use random noise as a baseline

\n", @@ -460,7 +460,7 @@ { "cell_type": "code", "execution_count": null, - "id": "8e4e92d0", + "id": "bbbe47bb", "metadata": { "tags": [ "task" @@ -482,7 +482,7 @@ }, { "cell_type": "markdown", - "id": "f9b5fba2", + "id": "bb810907", "metadata": { "tags": [] }, @@ -496,7 +496,7 @@ { "cell_type": "code", "execution_count": null, - "id": "58262250", + "id": "5b379c73", "metadata": { "tags": [ "task" @@ -520,7 +520,7 @@ }, { "cell_type": "markdown", - "id": "ccedb79c", + "id": "342b9336", "metadata": { "tags": [] }, @@ -536,7 +536,7 @@ }, { "cell_type": "markdown", - "id": "68893afb", + "id": "96d713fd", "metadata": {}, "source": [ "

BONUS Task: Using different attributions.

\n", @@ -550,7 +550,7 @@ }, { "cell_type": "markdown", - "id": "849fa319", + "id": "f6118ade", "metadata": {}, "source": [ "

Checkpoint 2

\n", @@ -570,7 +570,7 @@ }, { "cell_type": "markdown", - "id": "876bdd3b", + "id": "12781ee6", "metadata": { "lines_to_next_cell": 0 }, @@ -598,7 +598,7 @@ }, { "cell_type": "markdown", - "id": "5a1c2a34", + "id": "6dd2e900", "metadata": { "lines_to_next_cell": 0, "tags": [] @@ -621,7 +621,7 @@ { "cell_type": "code", "execution_count": null, - "id": "85aa4a15", + "id": "e489a340", "metadata": {}, "outputs": [], "source": [ @@ -653,7 +653,7 @@ }, { "cell_type": "markdown", - "id": "2b95f3e8", + "id": "d77aa8d1", "metadata": { "lines_to_next_cell": 0 }, @@ -668,7 +668,7 @@ { "cell_type": "code", "execution_count": null, - "id": "ac1205e5", + "id": "974e17d8", "metadata": { "lines_to_next_cell": 0, "tags": [ @@ -689,7 +689,7 @@ }, { "cell_type": "markdown", - "id": "9c976d43", + "id": "50f5d295", "metadata": { "tags": [] }, @@ -704,7 +704,7 @@ }, { "cell_type": "markdown", - "id": "881575de", + "id": "f4dd16b3", "metadata": { "lines_to_next_cell": 0, "tags": [] @@ -721,7 +721,7 @@ { "cell_type": "code", "execution_count": null, - "id": "e43f27f1", + "id": "ccf31a3c", "metadata": { "lines_to_next_cell": 0, "tags": [ @@ -735,7 +735,7 @@ }, { "cell_type": "markdown", - "id": "d29d8d58", + "id": "49ff9e3a", "metadata": { "lines_to_next_cell": 0 }, @@ -746,7 +746,7 @@ { "cell_type": "code", "execution_count": null, - "id": "f51b15fc", + "id": "b0f0fb98", "metadata": {}, "outputs": [], "source": [ @@ -756,7 +756,7 @@ }, { "cell_type": "markdown", - "id": "73814dae", + "id": "23b21a32", "metadata": { "lines_to_next_cell": 0, "tags": [] @@ -774,7 +774,7 @@ { "cell_type": "code", "execution_count": null, - "id": "5fc36682", + "id": "29678f3b", "metadata": { "lines_to_next_cell": 0 }, @@ -786,7 +786,7 @@ }, { "cell_type": "markdown", - "id": "e07edb85", + "id": "6c069dc6", "metadata": { "lines_to_next_cell": 0, "tags": [] @@ -805,7 +805,7 @@ { "cell_type": "code", "execution_count": null, - "id": "5082b8ab", + "id": "321515da", "metadata": {}, "outputs": [], "source": [ @@ -814,7 +814,7 @@ }, { "cell_type": "markdown", - "id": "43ef8a2d", + "id": "060fd784", "metadata": { "lines_to_next_cell": 0, "tags": [] @@ -830,7 +830,7 @@ { "cell_type": "code", "execution_count": null, - "id": "468fe88f", + "id": "8c85a285", "metadata": {}, "outputs": [], "source": [ @@ -839,7 +839,7 @@ }, { "cell_type": "markdown", - "id": "6dd0f856", + "id": "511db0c6", "metadata": { "lines_to_next_cell": 0, "tags": [] @@ -851,7 +851,7 @@ { "cell_type": "code", "execution_count": null, - "id": "89da32d6", + "id": "6c3dfe27", "metadata": {}, "outputs": [], "source": [ @@ -864,7 +864,7 @@ }, { "cell_type": "markdown", - "id": "2b894eac", + "id": "aca01927", "metadata": { "lines_to_next_cell": 0, "tags": [] @@ -878,7 +878,7 @@ { "cell_type": "code", "execution_count": null, - "id": "b25e284e", + "id": "c0bb0943", "metadata": {}, "outputs": [], "source": [ @@ -890,7 +890,7 @@ }, { "cell_type": "markdown", - "id": "72125f93", + "id": "1c17e308", "metadata": { "lines_to_next_cell": 0, "tags": [] @@ -910,7 +910,7 @@ { "cell_type": "code", "execution_count": null, - "id": "41cf9baf", + "id": "c378d7f9", "metadata": {}, "outputs": [], "source": [ @@ -934,7 +934,7 @@ { "cell_type": "code", "execution_count": null, - "id": "a5b1fb2e", + "id": "07f4fecf", "metadata": { "lines_to_next_cell": 2 }, @@ -946,7 +946,7 @@ }, { "cell_type": "markdown", - "id": "421a4724", + "id": "452728c7", "metadata": { "lines_to_next_cell": 0, "tags": [] @@ -968,7 +968,7 @@ }, { "cell_type": "markdown", - "id": "d375c071", + "id": "9a73a3eb", "metadata": { "lines_to_next_cell": 0, "tags": [] @@ -980,7 +980,7 @@ { "cell_type": "code", "execution_count": null, - "id": "f782b7f0", + "id": "01ddb9f7", "metadata": { "lines_to_next_cell": 0, "tags": [ @@ -1091,7 +1091,7 @@ }, { "cell_type": "markdown", - "id": "bf2700e1", + "id": "2b1901cd", "metadata": { "lines_to_next_cell": 0, "tags": [] @@ -1103,7 +1103,7 @@ { "cell_type": "code", "execution_count": null, - "id": "93af3047", + "id": "32eebf00", "metadata": {}, "outputs": [], "source": [ @@ -1119,7 +1119,7 @@ }, { "cell_type": "markdown", - "id": "65452041", + "id": "fd98dc27", "metadata": { "tags": [] }, @@ -1134,7 +1134,7 @@ }, { "cell_type": "markdown", - "id": "db668256", + "id": "c74e6127", "metadata": { "lines_to_next_cell": 0, "tags": [] @@ -1146,7 +1146,7 @@ { "cell_type": "code", "execution_count": null, - "id": "f76c5e65", + "id": "d38a9dfd", "metadata": {}, "outputs": [], "source": [ @@ -1168,7 +1168,7 @@ }, { "cell_type": "markdown", - "id": "573bb9d9", + "id": "bd940bab", "metadata": { "tags": [] }, @@ -1184,7 +1184,7 @@ }, { "cell_type": "markdown", - "id": "26dfd88b", + "id": "24e48cf3", "metadata": { "tags": [] }, @@ -1194,7 +1194,7 @@ }, { "cell_type": "markdown", - "id": "f48126ab", + "id": "1f56a54f", "metadata": { "tags": [] }, @@ -1211,7 +1211,7 @@ { "cell_type": "code", "execution_count": null, - "id": "4305090b", + "id": "8f572d41", "metadata": { "title": "Loading the test dataset" }, @@ -1231,7 +1231,7 @@ }, { "cell_type": "markdown", - "id": "154db796", + "id": "dc260633", "metadata": { "lines_to_next_cell": 0, "tags": [] @@ -1243,7 +1243,7 @@ { "cell_type": "code", "execution_count": null, - "id": "ebbcd12d", + "id": "0429a766", "metadata": {}, "outputs": [], "source": [ @@ -1256,7 +1256,7 @@ }, { "cell_type": "markdown", - "id": "61d5d4bc", + "id": "80f4b326", "metadata": { "lines_to_next_cell": 0 }, @@ -1266,7 +1266,7 @@ }, { "cell_type": "markdown", - "id": "7ae07350", + "id": "8443a95a", "metadata": { "lines_to_next_cell": 0 }, @@ -1284,7 +1284,7 @@ { "cell_type": "code", "execution_count": null, - "id": "bca04b2a", + "id": "012af37d", "metadata": { "lines_to_next_cell": 0, "tags": [ @@ -1320,7 +1320,7 @@ }, { "cell_type": "markdown", - "id": "bebb99c9", + "id": "9a2a6a90", "metadata": { "lines_to_next_cell": 0, "tags": [] @@ -1332,7 +1332,7 @@ { "cell_type": "code", "execution_count": null, - "id": "c87df0c0", + "id": "ca2d44e7", "metadata": {}, "outputs": [], "source": [ @@ -1345,7 +1345,7 @@ }, { "cell_type": "markdown", - "id": "2fbc38e9", + "id": "63966675", "metadata": { "tags": [] }, @@ -1360,7 +1360,7 @@ }, { "cell_type": "markdown", - "id": "baf8c83a", + "id": "413852c4", "metadata": { "tags": [] }, @@ -1371,7 +1371,7 @@ { "cell_type": "code", "execution_count": null, - "id": "2465c04b", + "id": "65d61fc4", "metadata": {}, "outputs": [], "source": [ @@ -1385,7 +1385,7 @@ }, { "cell_type": "markdown", - "id": "35613805", + "id": "b926cdc6", "metadata": { "tags": [] }, @@ -1400,7 +1400,7 @@ }, { "cell_type": "markdown", - "id": "321fcad6", + "id": "4aaf7349", "metadata": { "lines_to_next_cell": 0 }, @@ -1415,7 +1415,7 @@ { "cell_type": "code", "execution_count": null, - "id": "1c45c814", + "id": "ac005791", "metadata": {}, "outputs": [], "source": [ @@ -1436,7 +1436,7 @@ { "cell_type": "code", "execution_count": null, - "id": "584f13f4", + "id": "8f3faac4", "metadata": { "title": "Another visualization function" }, @@ -1465,7 +1465,7 @@ { "cell_type": "code", "execution_count": null, - "id": "df33dd4a", + "id": "956658ca", "metadata": { "lines_to_next_cell": 0 }, @@ -1473,7 +1473,7 @@ "source": [ "for idx in range(batch_size):\n", " print(\"Source class:\", y[idx].item())\n", - " print(\"Target class:\", 0)\n", + " print(\"Target class:\", target_class)\n", " visualize_color_attribution_and_counterfactual(\n", " attributions[idx].cpu().numpy(), x[idx].cpu().numpy(), x_fake[idx].cpu().numpy()\n", " )" @@ -1481,7 +1481,7 @@ }, { "cell_type": "markdown", - "id": "f2bdfa5d", + "id": "8df09e0c", "metadata": { "lines_to_next_cell": 0 }, @@ -1497,11 +1497,21 @@ }, { "cell_type": "markdown", - "id": "da87745e", + "id": "59557649", "metadata": { "lines_to_next_cell": 0 }, "source": [ + "By now you will have hopefully noticed that it isn't the exact color of the image that determines its class, but that two images with a very similar color can be of different classes!\n", + "\n", + "Here are two examples of image-counterfactual-attribution triplets.\n", + "You'll notice that they are *very* similar in every way! But one set is different classes, and one set is the same class!\n", + "\n", + "![same_class](assets/same_class.png)\n", + "![diff_class](assets/diff_class.png)\n", + "\n", + "We are missing a crucial step of the explanation pipeline: a quantification of how the class changes over the interpolation. \n", + "\n", "In the lecture, we used the attribution to act as a mask, to gradually go from the original image to the counterfactual image.\n", "This allowed us to classify all of the intermediate images, and learn how the class changed over the interpolation.\n", "Here we have a much simpler task so we have some advantages:\n", @@ -1512,7 +1522,7 @@ }, { "cell_type": "markdown", - "id": "88f10203", + "id": "0e01c5da", "metadata": { "lines_to_next_cell": 0 }, @@ -1526,7 +1536,7 @@ { "cell_type": "code", "execution_count": null, - "id": "2e79affe", + "id": "a9b88599", "metadata": { "lines_to_next_cell": 0 }, @@ -1546,7 +1556,7 @@ { "cell_type": "code", "execution_count": null, - "id": "70f9846e", + "id": "f402e79a", "metadata": { "lines_to_next_cell": 0 }, @@ -1582,7 +1592,7 @@ }, { "cell_type": "markdown", - "id": "386a9f4c", + "id": "fcefb0bb", "metadata": { "lines_to_next_cell": 0 }, @@ -1596,7 +1606,7 @@ }, { "cell_type": "markdown", - "id": "ae25a656", + "id": "01f9a614", "metadata": { "lines_to_next_cell": 0 }, @@ -1612,7 +1622,7 @@ }, { "cell_type": "markdown", - "id": "53c7b041", + "id": "3bb20dcd", "metadata": { "lines_to_next_cell": 0 }, @@ -1628,30 +1638,19 @@ }, { "cell_type": "markdown", - "id": "c75ed748", + "id": "d546c694", "metadata": { "lines_to_next_cell": 0 }, "source": [ "# Part 5: Exploring the Style Space, finding the answer\n", - "By now you will have hopefully noticed that it isn't the exact color of the image that determines its class, but that two images with a very similar color can be of different classes!\n", - "\n", - "Here is an example of two images that are very similar in color, but are of different classes.\n", - "![same_color_diff_class](assets/same_color_diff_class.png)\n", - "While both of the images are yellow, the attribution tells us (if you squint!) that one of the yellows has slightly more blue in it!\n", - "\n", - "Conversely, here is an example of two images with very different colors, but that are of the same class:\n", - "![same_class_diff_color](assets/same_class_diff_color.png)\n", - "Here the attribution is empty! Using the discriminative attribution we can see that the significant color change doesn't matter at all!\n", - "\n", - "\n", "So color is important... but not always? What's going on!?\n", "There is a final piece of information that we can use to solve the puzzle: the style space." ] }, { "cell_type": "markdown", - "id": "45dcb17b", + "id": "bc3ed726", "metadata": {}, "source": [ "

Task 5.1: Explore the style space

\n", @@ -1663,7 +1662,7 @@ { "cell_type": "code", "execution_count": null, - "id": "11309f0a", + "id": "718ce53b", "metadata": {}, "outputs": [], "source": [ @@ -1698,7 +1697,7 @@ }, { "cell_type": "markdown", - "id": "e7e0f8d4", + "id": "ca7a48a9", "metadata": { "lines_to_next_cell": 0 }, @@ -1714,7 +1713,7 @@ { "cell_type": "code", "execution_count": null, - "id": "cc183548", + "id": "e814f376", "metadata": { "lines_to_next_cell": 0 }, @@ -1741,7 +1740,7 @@ }, { "cell_type": "markdown", - "id": "9f34f021", + "id": "bbdc2fa9", "metadata": { "lines_to_next_cell": 0 }, @@ -1755,7 +1754,7 @@ }, { "cell_type": "markdown", - "id": "5d29071b", + "id": "3fe20ca4", "metadata": { "lines_to_next_cell": 0 }, @@ -1772,7 +1771,7 @@ { "cell_type": "code", "execution_count": null, - "id": "366dd45c", + "id": "ff536dd4", "metadata": {}, "outputs": [], "source": [ @@ -1794,7 +1793,7 @@ }, { "cell_type": "markdown", - "id": "b657a0f5", + "id": "d19016ff", "metadata": {}, "source": [ "

Questions

\n", @@ -1806,7 +1805,7 @@ }, { "cell_type": "markdown", - "id": "35b0a886", + "id": "24c11487", "metadata": {}, "source": [ "

Checkpoint 5

\n", @@ -1824,7 +1823,7 @@ }, { "cell_type": "markdown", - "id": "c7f12c18", + "id": "36582123", "metadata": {}, "source": [ "# Bonus!\n", diff --git a/solution.ipynb b/solution.ipynb index b8d9964..e1f331f 100644 --- a/solution.ipynb +++ b/solution.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "2cec6e2e", + "id": "1b3bf19e", "metadata": { "lines_to_next_cell": 0, "tags": [] @@ -29,7 +29,7 @@ }, { "cell_type": "markdown", - "id": "c9faff54", + "id": "067e738b", "metadata": { "lines_to_next_cell": 0 }, @@ -41,7 +41,7 @@ }, { "cell_type": "markdown", - "id": "8b2714f2", + "id": "b913b71a", "metadata": {}, "source": [ "\n", @@ -54,7 +54,7 @@ { "cell_type": "code", "execution_count": null, - "id": "196887ff", + "id": "98283047", "metadata": { "lines_to_next_cell": 0 }, @@ -68,7 +68,7 @@ }, { "cell_type": "markdown", - "id": "dc029ece", + "id": "1afbe1b3", "metadata": { "lines_to_next_cell": 0 }, @@ -84,7 +84,7 @@ { "cell_type": "code", "execution_count": null, - "id": "3f76a8a6", + "id": "5bef908b", "metadata": {}, "outputs": [], "source": [ @@ -102,7 +102,7 @@ }, { "cell_type": "markdown", - "id": "9ec21db3", + "id": "3e27811b", "metadata": { "lines_to_next_cell": 0 }, @@ -113,7 +113,7 @@ }, { "cell_type": "markdown", - "id": "06793f28", + "id": "c554ff65", "metadata": { "lines_to_next_cell": 0 }, @@ -130,7 +130,7 @@ { "cell_type": "code", "execution_count": null, - "id": "becee066", + "id": "885618d6", "metadata": { "tags": [ "solution" @@ -154,7 +154,7 @@ }, { "cell_type": "markdown", - "id": "e0d3e182", + "id": "9460ef99", "metadata": { "lines_to_next_cell": 0 }, @@ -165,7 +165,7 @@ { "cell_type": "code", "execution_count": null, - "id": "0bd2cb1e", + "id": "e35f652a", "metadata": { "lines_to_next_cell": 0 }, @@ -194,7 +194,7 @@ }, { "cell_type": "markdown", - "id": "88a42af2", + "id": "714d0118", "metadata": { "lines_to_next_cell": 0 }, @@ -211,7 +211,7 @@ }, { "cell_type": "markdown", - "id": "72fbabcd", + "id": "2b3080ec", "metadata": {}, "source": [ "# Part 2: Using Integrated Gradients to find what the classifier knows\n", @@ -221,7 +221,7 @@ }, { "cell_type": "markdown", - "id": "5a41df80", + "id": "42bf258c", "metadata": {}, "source": [ "## Attributions through integrated gradients\n", @@ -234,7 +234,7 @@ { "cell_type": "code", "execution_count": null, - "id": "c7615db3", + "id": "9dc58dab", "metadata": { "tags": [] }, @@ -252,7 +252,7 @@ }, { "cell_type": "markdown", - "id": "f8bc4307", + "id": "50185c99", "metadata": { "tags": [] }, @@ -268,7 +268,7 @@ { "cell_type": "code", "execution_count": null, - "id": "300ad40e", + "id": "a8bce89a", "metadata": { "tags": [ "solution" @@ -292,7 +292,7 @@ { "cell_type": "code", "execution_count": null, - "id": "8ebbe326", + "id": "eed52045", "metadata": { "tags": [] }, @@ -305,7 +305,7 @@ }, { "cell_type": "markdown", - "id": "2de7d44e", + "id": "be5a007b", "metadata": { "lines_to_next_cell": 2, "tags": [] @@ -317,7 +317,7 @@ { "cell_type": "code", "execution_count": null, - "id": "c484acb2", + "id": "5c0780f6", "metadata": { "tags": [] }, @@ -345,7 +345,7 @@ { "cell_type": "code", "execution_count": null, - "id": "898595ea", + "id": "30041689", "metadata": { "tags": [] }, @@ -358,7 +358,7 @@ }, { "cell_type": "markdown", - "id": "5b66372f", + "id": "c0d46960", "metadata": { "lines_to_next_cell": 2 }, @@ -372,7 +372,7 @@ }, { "cell_type": "markdown", - "id": "f26f6f42", + "id": "477cd87c", "metadata": { "lines_to_next_cell": 0 }, @@ -385,7 +385,7 @@ { "cell_type": "code", "execution_count": null, - "id": "69cf5669", + "id": "ed247a59", "metadata": {}, "outputs": [], "source": [ @@ -410,7 +410,7 @@ }, { "cell_type": "markdown", - "id": "9642568b", + "id": "746de08d", "metadata": { "lines_to_next_cell": 0 }, @@ -424,7 +424,7 @@ }, { "cell_type": "markdown", - "id": "2891c43d", + "id": "8c5ea46b", "metadata": {}, "source": [ "\n", @@ -450,7 +450,7 @@ }, { "cell_type": "markdown", - "id": "357966b5", + "id": "eaacace4", "metadata": {}, "source": [ "

Task 2.3: Use random noise as a baseline

\n", @@ -462,7 +462,7 @@ { "cell_type": "code", "execution_count": null, - "id": "99c5b515", + "id": "35062d2c", "metadata": { "tags": [ "solution" @@ -488,7 +488,7 @@ }, { "cell_type": "markdown", - "id": "f9b5fba2", + "id": "bb810907", "metadata": { "tags": [] }, @@ -502,7 +502,7 @@ { "cell_type": "code", "execution_count": null, - "id": "2ba867e8", + "id": "367cb0b3", "metadata": { "tags": [ "solution" @@ -532,7 +532,7 @@ }, { "cell_type": "markdown", - "id": "ccedb79c", + "id": "342b9336", "metadata": { "tags": [] }, @@ -548,7 +548,7 @@ }, { "cell_type": "markdown", - "id": "68893afb", + "id": "96d713fd", "metadata": {}, "source": [ "

BONUS Task: Using different attributions.

\n", @@ -562,7 +562,7 @@ }, { "cell_type": "markdown", - "id": "849fa319", + "id": "f6118ade", "metadata": {}, "source": [ "

Checkpoint 2

\n", @@ -582,7 +582,7 @@ }, { "cell_type": "markdown", - "id": "876bdd3b", + "id": "12781ee6", "metadata": { "lines_to_next_cell": 0 }, @@ -610,7 +610,7 @@ }, { "cell_type": "markdown", - "id": "5a1c2a34", + "id": "6dd2e900", "metadata": { "lines_to_next_cell": 0, "tags": [] @@ -633,7 +633,7 @@ { "cell_type": "code", "execution_count": null, - "id": "85aa4a15", + "id": "e489a340", "metadata": {}, "outputs": [], "source": [ @@ -665,7 +665,7 @@ }, { "cell_type": "markdown", - "id": "2b95f3e8", + "id": "d77aa8d1", "metadata": { "lines_to_next_cell": 0 }, @@ -680,7 +680,7 @@ { "cell_type": "code", "execution_count": null, - "id": "ff8cbb81", + "id": "8ec9d68a", "metadata": { "tags": [ "solution" @@ -697,7 +697,7 @@ }, { "cell_type": "markdown", - "id": "9c976d43", + "id": "50f5d295", "metadata": { "tags": [] }, @@ -712,7 +712,7 @@ }, { "cell_type": "markdown", - "id": "881575de", + "id": "f4dd16b3", "metadata": { "lines_to_next_cell": 0, "tags": [] @@ -729,7 +729,7 @@ { "cell_type": "code", "execution_count": null, - "id": "de64cf3c", + "id": "7152c016", "metadata": { "lines_to_next_cell": 0, "tags": [ @@ -743,7 +743,7 @@ }, { "cell_type": "markdown", - "id": "d29d8d58", + "id": "49ff9e3a", "metadata": { "lines_to_next_cell": 0 }, @@ -754,7 +754,7 @@ { "cell_type": "code", "execution_count": null, - "id": "f51b15fc", + "id": "b0f0fb98", "metadata": {}, "outputs": [], "source": [ @@ -764,7 +764,7 @@ }, { "cell_type": "markdown", - "id": "73814dae", + "id": "23b21a32", "metadata": { "lines_to_next_cell": 0, "tags": [] @@ -782,7 +782,7 @@ { "cell_type": "code", "execution_count": null, - "id": "5fc36682", + "id": "29678f3b", "metadata": { "lines_to_next_cell": 0 }, @@ -794,7 +794,7 @@ }, { "cell_type": "markdown", - "id": "e07edb85", + "id": "6c069dc6", "metadata": { "lines_to_next_cell": 0, "tags": [] @@ -813,7 +813,7 @@ { "cell_type": "code", "execution_count": null, - "id": "5082b8ab", + "id": "321515da", "metadata": {}, "outputs": [], "source": [ @@ -822,7 +822,7 @@ }, { "cell_type": "markdown", - "id": "43ef8a2d", + "id": "060fd784", "metadata": { "lines_to_next_cell": 0, "tags": [] @@ -838,7 +838,7 @@ { "cell_type": "code", "execution_count": null, - "id": "468fe88f", + "id": "8c85a285", "metadata": {}, "outputs": [], "source": [ @@ -847,7 +847,7 @@ }, { "cell_type": "markdown", - "id": "6dd0f856", + "id": "511db0c6", "metadata": { "lines_to_next_cell": 0, "tags": [] @@ -859,7 +859,7 @@ { "cell_type": "code", "execution_count": null, - "id": "89da32d6", + "id": "6c3dfe27", "metadata": {}, "outputs": [], "source": [ @@ -872,7 +872,7 @@ }, { "cell_type": "markdown", - "id": "2b894eac", + "id": "aca01927", "metadata": { "lines_to_next_cell": 0, "tags": [] @@ -886,7 +886,7 @@ { "cell_type": "code", "execution_count": null, - "id": "b25e284e", + "id": "c0bb0943", "metadata": {}, "outputs": [], "source": [ @@ -898,7 +898,7 @@ }, { "cell_type": "markdown", - "id": "72125f93", + "id": "1c17e308", "metadata": { "lines_to_next_cell": 0, "tags": [] @@ -918,7 +918,7 @@ { "cell_type": "code", "execution_count": null, - "id": "41cf9baf", + "id": "c378d7f9", "metadata": {}, "outputs": [], "source": [ @@ -942,7 +942,7 @@ { "cell_type": "code", "execution_count": null, - "id": "a5b1fb2e", + "id": "07f4fecf", "metadata": { "lines_to_next_cell": 2 }, @@ -954,7 +954,7 @@ }, { "cell_type": "markdown", - "id": "421a4724", + "id": "452728c7", "metadata": { "lines_to_next_cell": 0, "tags": [] @@ -976,7 +976,7 @@ }, { "cell_type": "markdown", - "id": "d375c071", + "id": "9a73a3eb", "metadata": { "lines_to_next_cell": 0, "tags": [] @@ -988,7 +988,7 @@ { "cell_type": "code", "execution_count": null, - "id": "c79ac460", + "id": "a32e6ffb", "metadata": { "lines_to_next_cell": 2, "tags": [ @@ -1058,7 +1058,7 @@ }, { "cell_type": "markdown", - "id": "bf2700e1", + "id": "2b1901cd", "metadata": { "lines_to_next_cell": 0, "tags": [] @@ -1070,7 +1070,7 @@ { "cell_type": "code", "execution_count": null, - "id": "93af3047", + "id": "32eebf00", "metadata": {}, "outputs": [], "source": [ @@ -1086,7 +1086,7 @@ }, { "cell_type": "markdown", - "id": "65452041", + "id": "fd98dc27", "metadata": { "tags": [] }, @@ -1101,7 +1101,7 @@ }, { "cell_type": "markdown", - "id": "db668256", + "id": "c74e6127", "metadata": { "lines_to_next_cell": 0, "tags": [] @@ -1113,7 +1113,7 @@ { "cell_type": "code", "execution_count": null, - "id": "f76c5e65", + "id": "d38a9dfd", "metadata": {}, "outputs": [], "source": [ @@ -1135,7 +1135,7 @@ }, { "cell_type": "markdown", - "id": "573bb9d9", + "id": "bd940bab", "metadata": { "tags": [] }, @@ -1151,7 +1151,7 @@ }, { "cell_type": "markdown", - "id": "26dfd88b", + "id": "24e48cf3", "metadata": { "tags": [] }, @@ -1161,7 +1161,7 @@ }, { "cell_type": "markdown", - "id": "f48126ab", + "id": "1f56a54f", "metadata": { "tags": [] }, @@ -1178,7 +1178,7 @@ { "cell_type": "code", "execution_count": null, - "id": "4305090b", + "id": "8f572d41", "metadata": { "title": "Loading the test dataset" }, @@ -1198,7 +1198,7 @@ }, { "cell_type": "markdown", - "id": "154db796", + "id": "dc260633", "metadata": { "lines_to_next_cell": 0, "tags": [] @@ -1210,7 +1210,7 @@ { "cell_type": "code", "execution_count": null, - "id": "ebbcd12d", + "id": "0429a766", "metadata": {}, "outputs": [], "source": [ @@ -1223,7 +1223,7 @@ }, { "cell_type": "markdown", - "id": "61d5d4bc", + "id": "80f4b326", "metadata": { "lines_to_next_cell": 0 }, @@ -1233,7 +1233,7 @@ }, { "cell_type": "markdown", - "id": "7ae07350", + "id": "8443a95a", "metadata": { "lines_to_next_cell": 0 }, @@ -1251,7 +1251,7 @@ { "cell_type": "code", "execution_count": null, - "id": "ede3165e", + "id": "e448e313", "metadata": { "tags": [ "solution" @@ -1288,7 +1288,7 @@ }, { "cell_type": "markdown", - "id": "bebb99c9", + "id": "9a2a6a90", "metadata": { "lines_to_next_cell": 0, "tags": [] @@ -1300,7 +1300,7 @@ { "cell_type": "code", "execution_count": null, - "id": "c87df0c0", + "id": "ca2d44e7", "metadata": {}, "outputs": [], "source": [ @@ -1313,7 +1313,7 @@ }, { "cell_type": "markdown", - "id": "2fbc38e9", + "id": "63966675", "metadata": { "tags": [] }, @@ -1328,7 +1328,7 @@ }, { "cell_type": "markdown", - "id": "baf8c83a", + "id": "413852c4", "metadata": { "tags": [] }, @@ -1339,7 +1339,7 @@ { "cell_type": "code", "execution_count": null, - "id": "2465c04b", + "id": "65d61fc4", "metadata": {}, "outputs": [], "source": [ @@ -1353,7 +1353,7 @@ }, { "cell_type": "markdown", - "id": "35613805", + "id": "b926cdc6", "metadata": { "tags": [] }, @@ -1368,7 +1368,7 @@ }, { "cell_type": "markdown", - "id": "321fcad6", + "id": "4aaf7349", "metadata": { "lines_to_next_cell": 0 }, @@ -1383,7 +1383,7 @@ { "cell_type": "code", "execution_count": null, - "id": "1c45c814", + "id": "ac005791", "metadata": {}, "outputs": [], "source": [ @@ -1404,7 +1404,7 @@ { "cell_type": "code", "execution_count": null, - "id": "584f13f4", + "id": "8f3faac4", "metadata": { "title": "Another visualization function" }, @@ -1433,7 +1433,7 @@ { "cell_type": "code", "execution_count": null, - "id": "df33dd4a", + "id": "956658ca", "metadata": { "lines_to_next_cell": 0 }, @@ -1441,7 +1441,7 @@ "source": [ "for idx in range(batch_size):\n", " print(\"Source class:\", y[idx].item())\n", - " print(\"Target class:\", 0)\n", + " print(\"Target class:\", target_class)\n", " visualize_color_attribution_and_counterfactual(\n", " attributions[idx].cpu().numpy(), x[idx].cpu().numpy(), x_fake[idx].cpu().numpy()\n", " )" @@ -1449,7 +1449,7 @@ }, { "cell_type": "markdown", - "id": "f2bdfa5d", + "id": "8df09e0c", "metadata": { "lines_to_next_cell": 0 }, @@ -1465,11 +1465,21 @@ }, { "cell_type": "markdown", - "id": "da87745e", + "id": "59557649", "metadata": { "lines_to_next_cell": 0 }, "source": [ + "By now you will have hopefully noticed that it isn't the exact color of the image that determines its class, but that two images with a very similar color can be of different classes!\n", + "\n", + "Here are two examples of image-counterfactual-attribution triplets.\n", + "You'll notice that they are *very* similar in every way! But one set is different classes, and one set is the same class!\n", + "\n", + "![same_class](assets/same_class.png)\n", + "![diff_class](assets/diff_class.png)\n", + "\n", + "We are missing a crucial step of the explanation pipeline: a quantification of how the class changes over the interpolation. \n", + "\n", "In the lecture, we used the attribution to act as a mask, to gradually go from the original image to the counterfactual image.\n", "This allowed us to classify all of the intermediate images, and learn how the class changed over the interpolation.\n", "Here we have a much simpler task so we have some advantages:\n", @@ -1480,7 +1490,7 @@ }, { "cell_type": "markdown", - "id": "88f10203", + "id": "0e01c5da", "metadata": { "lines_to_next_cell": 0 }, @@ -1494,7 +1504,7 @@ { "cell_type": "code", "execution_count": null, - "id": "2e79affe", + "id": "a9b88599", "metadata": { "lines_to_next_cell": 0 }, @@ -1514,7 +1524,7 @@ { "cell_type": "code", "execution_count": null, - "id": "70f9846e", + "id": "f402e79a", "metadata": { "lines_to_next_cell": 0 }, @@ -1550,7 +1560,7 @@ }, { "cell_type": "markdown", - "id": "386a9f4c", + "id": "fcefb0bb", "metadata": { "lines_to_next_cell": 0 }, @@ -1564,7 +1574,7 @@ }, { "cell_type": "markdown", - "id": "ae25a656", + "id": "01f9a614", "metadata": { "lines_to_next_cell": 0 }, @@ -1580,7 +1590,7 @@ }, { "cell_type": "markdown", - "id": "53c7b041", + "id": "3bb20dcd", "metadata": { "lines_to_next_cell": 0 }, @@ -1596,30 +1606,19 @@ }, { "cell_type": "markdown", - "id": "c75ed748", + "id": "d546c694", "metadata": { "lines_to_next_cell": 0 }, "source": [ "# Part 5: Exploring the Style Space, finding the answer\n", - "By now you will have hopefully noticed that it isn't the exact color of the image that determines its class, but that two images with a very similar color can be of different classes!\n", - "\n", - "Here is an example of two images that are very similar in color, but are of different classes.\n", - "![same_color_diff_class](assets/same_color_diff_class.png)\n", - "While both of the images are yellow, the attribution tells us (if you squint!) that one of the yellows has slightly more blue in it!\n", - "\n", - "Conversely, here is an example of two images with very different colors, but that are of the same class:\n", - "![same_class_diff_color](assets/same_class_diff_color.png)\n", - "Here the attribution is empty! Using the discriminative attribution we can see that the significant color change doesn't matter at all!\n", - "\n", - "\n", "So color is important... but not always? What's going on!?\n", "There is a final piece of information that we can use to solve the puzzle: the style space." ] }, { "cell_type": "markdown", - "id": "45dcb17b", + "id": "bc3ed726", "metadata": {}, "source": [ "

Task 5.1: Explore the style space

\n", @@ -1631,7 +1630,7 @@ { "cell_type": "code", "execution_count": null, - "id": "11309f0a", + "id": "718ce53b", "metadata": {}, "outputs": [], "source": [ @@ -1666,7 +1665,7 @@ }, { "cell_type": "markdown", - "id": "e7e0f8d4", + "id": "ca7a48a9", "metadata": { "lines_to_next_cell": 0 }, @@ -1682,7 +1681,7 @@ { "cell_type": "code", "execution_count": null, - "id": "cc183548", + "id": "e814f376", "metadata": { "lines_to_next_cell": 0 }, @@ -1709,7 +1708,7 @@ }, { "cell_type": "markdown", - "id": "9f34f021", + "id": "bbdc2fa9", "metadata": { "lines_to_next_cell": 0 }, @@ -1723,7 +1722,7 @@ }, { "cell_type": "markdown", - "id": "5d29071b", + "id": "3fe20ca4", "metadata": { "lines_to_next_cell": 0 }, @@ -1740,7 +1739,7 @@ { "cell_type": "code", "execution_count": null, - "id": "366dd45c", + "id": "ff536dd4", "metadata": {}, "outputs": [], "source": [ @@ -1762,7 +1761,7 @@ }, { "cell_type": "markdown", - "id": "b657a0f5", + "id": "d19016ff", "metadata": {}, "source": [ "

Questions

\n", @@ -1774,7 +1773,7 @@ }, { "cell_type": "markdown", - "id": "35b0a886", + "id": "24c11487", "metadata": {}, "source": [ "

Checkpoint 5

\n", @@ -1792,7 +1791,7 @@ }, { "cell_type": "markdown", - "id": "c7f12c18", + "id": "36582123", "metadata": {}, "source": [ "# Bonus!\n", @@ -1807,7 +1806,7 @@ }, { "cell_type": "markdown", - "id": "93aa15d5", + "id": "44f3ac5f", "metadata": { "tags": [ "solution" @@ -1821,7 +1820,7 @@ { "cell_type": "code", "execution_count": null, - "id": "ac995812", + "id": "3144a680", "metadata": { "tags": [ "solution" From 622745633df48a2a97cb1040584d5ee8798e00af Mon Sep 17 00:00:00 2001 From: Diane Adjavon Date: Mon, 26 Aug 2024 17:58:26 -0400 Subject: [PATCH 3/4] Fix lists in checkpoints --- solution.py | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/solution.py b/solution.py index a5f0c6f..1111482 100644 --- a/solution.py +++ b/solution.py @@ -1055,12 +1055,13 @@ def visualize_color_attribution_and_counterfactual( # %% [markdown] #

Checkpoint 4

# At this point you have: -# - Created a StarGAN that can change the class of an image -# - Evaluated the StarGAN on unseen data -# - Used the StarGAN to create counterfactual images -# - Used the counterfactual images to highlight the differences between classes -# - Interpolated between the images to see how the classifier behaves -# +#
    +#
  • Created a StarGAN that can change the class of an image
  • +#
  • Evaluated the StarGAN on unseen data
  • +#
  • Used the StarGAN to create counterfactual images
  • +#
  • Used the counterfactual images to highlight the differences between classes
  • +#
  • Interpolated between the images to see how the classifier behaves
  • +#
# %% [markdown] # # Part 5: Exploring the Style Space, finding the answer # So color is important... but not always? What's going on!? @@ -1166,11 +1167,13 @@ def visualize_color_attribution_and_counterfactual( #

Checkpoint 5

# Congratulations! You have made it to the end of the exercise! # You have: -# - Created a StarGAN that can change the class of an image -# - Evaluated the StarGAN on unseen data -# - Used the StarGAN to create counterfactual images -# - Used the counterfactual images to highlight the differences between classes -# - Used the style space to understand the differences between classes +#
    +#
  • Created a StarGAN that can change the class of an image
  • +#
  • Evaluated the StarGAN on unseen data
  • +#
  • Used the StarGAN to create counterfactual images
  • +#
  • Used the counterfactual images to highlight the differences between classes
  • +#
  • Used the style space to understand the differences between classes
  • +#
# # If you have any questions, feel free to ask them in the chat! # And check the Solutions exercise for a definite answer to how these classes are defined! From 4749b5f4b8f8a8328373404cd9550afe6be7ce61 Mon Sep 17 00:00:00 2001 From: adjavon Date: Mon, 26 Aug 2024 21:59:13 +0000 Subject: [PATCH 4/4] Commit from GitHub Actions (Build Notebooks) --- exercise.ipynb | 228 ++++++++++++++++++++++++------------------------ solution.ipynb | 232 +++++++++++++++++++++++++------------------------ 2 files changed, 234 insertions(+), 226 deletions(-) diff --git a/exercise.ipynb b/exercise.ipynb index 4a0a4a5..1c05f30 100644 --- a/exercise.ipynb +++ b/exercise.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "1b3bf19e", + "id": "508f55c4", "metadata": { "lines_to_next_cell": 0, "tags": [] @@ -29,7 +29,7 @@ }, { "cell_type": "markdown", - "id": "067e738b", + "id": "88480b87", "metadata": { "lines_to_next_cell": 0 }, @@ -41,7 +41,7 @@ }, { "cell_type": "markdown", - "id": "b913b71a", + "id": "62e6288c", "metadata": {}, "source": [ "\n", @@ -54,7 +54,7 @@ { "cell_type": "code", "execution_count": null, - "id": "98283047", + "id": "524e722d", "metadata": { "lines_to_next_cell": 0 }, @@ -68,7 +68,7 @@ }, { "cell_type": "markdown", - "id": "1afbe1b3", + "id": "c9c22ad8", "metadata": { "lines_to_next_cell": 0 }, @@ -84,7 +84,7 @@ { "cell_type": "code", "execution_count": null, - "id": "5bef908b", + "id": "25fb11b9", "metadata": {}, "outputs": [], "source": [ @@ -102,7 +102,7 @@ }, { "cell_type": "markdown", - "id": "3e27811b", + "id": "cc3c08e3", "metadata": { "lines_to_next_cell": 0 }, @@ -113,7 +113,7 @@ }, { "cell_type": "markdown", - "id": "c554ff65", + "id": "254aef78", "metadata": { "lines_to_next_cell": 0 }, @@ -130,7 +130,7 @@ { "cell_type": "code", "execution_count": null, - "id": "0f8465d5", + "id": "44819937", "metadata": { "lines_to_next_cell": 0, "tags": [ @@ -155,7 +155,7 @@ }, { "cell_type": "markdown", - "id": "9460ef99", + "id": "61dbe630", "metadata": { "lines_to_next_cell": 0 }, @@ -166,7 +166,7 @@ { "cell_type": "code", "execution_count": null, - "id": "e35f652a", + "id": "4ffba779", "metadata": { "lines_to_next_cell": 0 }, @@ -195,7 +195,7 @@ }, { "cell_type": "markdown", - "id": "714d0118", + "id": "7be4250a", "metadata": { "lines_to_next_cell": 0 }, @@ -212,7 +212,7 @@ }, { "cell_type": "markdown", - "id": "2b3080ec", + "id": "5f8c898d", "metadata": {}, "source": [ "# Part 2: Using Integrated Gradients to find what the classifier knows\n", @@ -222,7 +222,7 @@ }, { "cell_type": "markdown", - "id": "42bf258c", + "id": "a284d49b", "metadata": {}, "source": [ "## Attributions through integrated gradients\n", @@ -235,7 +235,7 @@ { "cell_type": "code", "execution_count": null, - "id": "9dc58dab", + "id": "925ce3e7", "metadata": { "tags": [] }, @@ -253,7 +253,7 @@ }, { "cell_type": "markdown", - "id": "50185c99", + "id": "b72a7b5a", "metadata": { "tags": [] }, @@ -269,7 +269,7 @@ { "cell_type": "code", "execution_count": null, - "id": "e960ab8b", + "id": "9c1f5411", "metadata": { "tags": [ "task" @@ -290,7 +290,7 @@ { "cell_type": "code", "execution_count": null, - "id": "eed52045", + "id": "3a0c2413", "metadata": { "tags": [] }, @@ -303,7 +303,7 @@ }, { "cell_type": "markdown", - "id": "be5a007b", + "id": "1941efec", "metadata": { "lines_to_next_cell": 2, "tags": [] @@ -315,7 +315,7 @@ { "cell_type": "code", "execution_count": null, - "id": "5c0780f6", + "id": "3c89c686", "metadata": { "tags": [] }, @@ -343,7 +343,7 @@ { "cell_type": "code", "execution_count": null, - "id": "30041689", + "id": "e10dc24d", "metadata": { "tags": [] }, @@ -356,7 +356,7 @@ }, { "cell_type": "markdown", - "id": "c0d46960", + "id": "91f7fb24", "metadata": { "lines_to_next_cell": 2 }, @@ -370,7 +370,7 @@ }, { "cell_type": "markdown", - "id": "477cd87c", + "id": "5e1f90c7", "metadata": { "lines_to_next_cell": 0 }, @@ -383,7 +383,7 @@ { "cell_type": "code", "execution_count": null, - "id": "ed247a59", + "id": "598a1f0a", "metadata": {}, "outputs": [], "source": [ @@ -408,7 +408,7 @@ }, { "cell_type": "markdown", - "id": "746de08d", + "id": "d873aa39", "metadata": { "lines_to_next_cell": 0 }, @@ -422,7 +422,7 @@ }, { "cell_type": "markdown", - "id": "8c5ea46b", + "id": "05d0cef7", "metadata": {}, "source": [ "\n", @@ -448,7 +448,7 @@ }, { "cell_type": "markdown", - "id": "eaacace4", + "id": "43b62c80", "metadata": {}, "source": [ "

Task 2.3: Use random noise as a baseline

\n", @@ -460,7 +460,7 @@ { "cell_type": "code", "execution_count": null, - "id": "bbbe47bb", + "id": "b6dd00a1", "metadata": { "tags": [ "task" @@ -482,7 +482,7 @@ }, { "cell_type": "markdown", - "id": "bb810907", + "id": "f3c3e97c", "metadata": { "tags": [] }, @@ -496,7 +496,7 @@ { "cell_type": "code", "execution_count": null, - "id": "5b379c73", + "id": "526117e5", "metadata": { "tags": [ "task" @@ -520,7 +520,7 @@ }, { "cell_type": "markdown", - "id": "342b9336", + "id": "7abf9f27", "metadata": { "tags": [] }, @@ -536,7 +536,7 @@ }, { "cell_type": "markdown", - "id": "96d713fd", + "id": "c37b4cc9", "metadata": {}, "source": [ "

BONUS Task: Using different attributions.

\n", @@ -550,7 +550,7 @@ }, { "cell_type": "markdown", - "id": "f6118ade", + "id": "b08a5590", "metadata": {}, "source": [ "

Checkpoint 2

\n", @@ -570,7 +570,7 @@ }, { "cell_type": "markdown", - "id": "12781ee6", + "id": "13b502ee", "metadata": { "lines_to_next_cell": 0 }, @@ -598,7 +598,7 @@ }, { "cell_type": "markdown", - "id": "6dd2e900", + "id": "a39a4234", "metadata": { "lines_to_next_cell": 0, "tags": [] @@ -621,7 +621,7 @@ { "cell_type": "code", "execution_count": null, - "id": "e489a340", + "id": "ccbd9243", "metadata": {}, "outputs": [], "source": [ @@ -653,7 +653,7 @@ }, { "cell_type": "markdown", - "id": "d77aa8d1", + "id": "3d75236e", "metadata": { "lines_to_next_cell": 0 }, @@ -668,7 +668,7 @@ { "cell_type": "code", "execution_count": null, - "id": "974e17d8", + "id": "edd299c4", "metadata": { "lines_to_next_cell": 0, "tags": [ @@ -689,7 +689,7 @@ }, { "cell_type": "markdown", - "id": "50f5d295", + "id": "8cc42dea", "metadata": { "tags": [] }, @@ -704,7 +704,7 @@ }, { "cell_type": "markdown", - "id": "f4dd16b3", + "id": "afa65120", "metadata": { "lines_to_next_cell": 0, "tags": [] @@ -721,7 +721,7 @@ { "cell_type": "code", "execution_count": null, - "id": "ccf31a3c", + "id": "4088b0ab", "metadata": { "lines_to_next_cell": 0, "tags": [ @@ -735,7 +735,7 @@ }, { "cell_type": "markdown", - "id": "49ff9e3a", + "id": "5b47154f", "metadata": { "lines_to_next_cell": 0 }, @@ -746,7 +746,7 @@ { "cell_type": "code", "execution_count": null, - "id": "b0f0fb98", + "id": "fb6eecc1", "metadata": {}, "outputs": [], "source": [ @@ -756,7 +756,7 @@ }, { "cell_type": "markdown", - "id": "23b21a32", + "id": "c79251f6", "metadata": { "lines_to_next_cell": 0, "tags": [] @@ -774,7 +774,7 @@ { "cell_type": "code", "execution_count": null, - "id": "29678f3b", + "id": "810cae99", "metadata": { "lines_to_next_cell": 0 }, @@ -786,7 +786,7 @@ }, { "cell_type": "markdown", - "id": "6c069dc6", + "id": "19e0a570", "metadata": { "lines_to_next_cell": 0, "tags": [] @@ -805,7 +805,7 @@ { "cell_type": "code", "execution_count": null, - "id": "321515da", + "id": "8eb2fe39", "metadata": {}, "outputs": [], "source": [ @@ -814,7 +814,7 @@ }, { "cell_type": "markdown", - "id": "060fd784", + "id": "7ffb373b", "metadata": { "lines_to_next_cell": 0, "tags": [] @@ -830,7 +830,7 @@ { "cell_type": "code", "execution_count": null, - "id": "8c85a285", + "id": "1a5c8832", "metadata": {}, "outputs": [], "source": [ @@ -839,7 +839,7 @@ }, { "cell_type": "markdown", - "id": "511db0c6", + "id": "2b585f2b", "metadata": { "lines_to_next_cell": 0, "tags": [] @@ -851,7 +851,7 @@ { "cell_type": "code", "execution_count": null, - "id": "6c3dfe27", + "id": "e957ad43", "metadata": {}, "outputs": [], "source": [ @@ -864,7 +864,7 @@ }, { "cell_type": "markdown", - "id": "aca01927", + "id": "204a9236", "metadata": { "lines_to_next_cell": 0, "tags": [] @@ -878,7 +878,7 @@ { "cell_type": "code", "execution_count": null, - "id": "c0bb0943", + "id": "b87e8d1e", "metadata": {}, "outputs": [], "source": [ @@ -890,7 +890,7 @@ }, { "cell_type": "markdown", - "id": "1c17e308", + "id": "618bebe4", "metadata": { "lines_to_next_cell": 0, "tags": [] @@ -910,7 +910,7 @@ { "cell_type": "code", "execution_count": null, - "id": "c378d7f9", + "id": "258d6086", "metadata": {}, "outputs": [], "source": [ @@ -934,7 +934,7 @@ { "cell_type": "code", "execution_count": null, - "id": "07f4fecf", + "id": "724e40db", "metadata": { "lines_to_next_cell": 2 }, @@ -946,7 +946,7 @@ }, { "cell_type": "markdown", - "id": "452728c7", + "id": "4ad4b22d", "metadata": { "lines_to_next_cell": 0, "tags": [] @@ -968,7 +968,7 @@ }, { "cell_type": "markdown", - "id": "9a73a3eb", + "id": "271bc482", "metadata": { "lines_to_next_cell": 0, "tags": [] @@ -980,7 +980,7 @@ { "cell_type": "code", "execution_count": null, - "id": "01ddb9f7", + "id": "8f5fb50f", "metadata": { "lines_to_next_cell": 0, "tags": [ @@ -1091,7 +1091,7 @@ }, { "cell_type": "markdown", - "id": "2b1901cd", + "id": "e323e6f7", "metadata": { "lines_to_next_cell": 0, "tags": [] @@ -1103,7 +1103,7 @@ { "cell_type": "code", "execution_count": null, - "id": "32eebf00", + "id": "fd20bc6e", "metadata": {}, "outputs": [], "source": [ @@ -1119,7 +1119,7 @@ }, { "cell_type": "markdown", - "id": "fd98dc27", + "id": "240c3164", "metadata": { "tags": [] }, @@ -1134,7 +1134,7 @@ }, { "cell_type": "markdown", - "id": "c74e6127", + "id": "deb3d3a0", "metadata": { "lines_to_next_cell": 0, "tags": [] @@ -1146,7 +1146,7 @@ { "cell_type": "code", "execution_count": null, - "id": "d38a9dfd", + "id": "d3f7104a", "metadata": {}, "outputs": [], "source": [ @@ -1168,7 +1168,7 @@ }, { "cell_type": "markdown", - "id": "bd940bab", + "id": "6c7e4472", "metadata": { "tags": [] }, @@ -1184,7 +1184,7 @@ }, { "cell_type": "markdown", - "id": "24e48cf3", + "id": "b3c5bbd0", "metadata": { "tags": [] }, @@ -1194,7 +1194,7 @@ }, { "cell_type": "markdown", - "id": "1f56a54f", + "id": "7c8c76fe", "metadata": { "tags": [] }, @@ -1211,7 +1211,7 @@ { "cell_type": "code", "execution_count": null, - "id": "8f572d41", + "id": "3d4f212c", "metadata": { "title": "Loading the test dataset" }, @@ -1231,7 +1231,7 @@ }, { "cell_type": "markdown", - "id": "dc260633", + "id": "0394fb82", "metadata": { "lines_to_next_cell": 0, "tags": [] @@ -1243,7 +1243,7 @@ { "cell_type": "code", "execution_count": null, - "id": "0429a766", + "id": "f7e02a34", "metadata": {}, "outputs": [], "source": [ @@ -1256,7 +1256,7 @@ }, { "cell_type": "markdown", - "id": "80f4b326", + "id": "bc9acb76", "metadata": { "lines_to_next_cell": 0 }, @@ -1266,7 +1266,7 @@ }, { "cell_type": "markdown", - "id": "8443a95a", + "id": "54fb79ed", "metadata": { "lines_to_next_cell": 0 }, @@ -1284,7 +1284,7 @@ { "cell_type": "code", "execution_count": null, - "id": "012af37d", + "id": "068cff35", "metadata": { "lines_to_next_cell": 0, "tags": [ @@ -1320,7 +1320,7 @@ }, { "cell_type": "markdown", - "id": "9a2a6a90", + "id": "255934ec", "metadata": { "lines_to_next_cell": 0, "tags": [] @@ -1332,7 +1332,7 @@ { "cell_type": "code", "execution_count": null, - "id": "ca2d44e7", + "id": "6daca8ca", "metadata": {}, "outputs": [], "source": [ @@ -1345,7 +1345,7 @@ }, { "cell_type": "markdown", - "id": "63966675", + "id": "18186b93", "metadata": { "tags": [] }, @@ -1360,7 +1360,7 @@ }, { "cell_type": "markdown", - "id": "413852c4", + "id": "29b63b00", "metadata": { "tags": [] }, @@ -1371,7 +1371,7 @@ { "cell_type": "code", "execution_count": null, - "id": "65d61fc4", + "id": "411b8730", "metadata": {}, "outputs": [], "source": [ @@ -1385,7 +1385,7 @@ }, { "cell_type": "markdown", - "id": "b926cdc6", + "id": "dcce6a0c", "metadata": { "tags": [] }, @@ -1400,7 +1400,7 @@ }, { "cell_type": "markdown", - "id": "4aaf7349", + "id": "106316e5", "metadata": { "lines_to_next_cell": 0 }, @@ -1415,7 +1415,7 @@ { "cell_type": "code", "execution_count": null, - "id": "ac005791", + "id": "152bed37", "metadata": {}, "outputs": [], "source": [ @@ -1436,7 +1436,7 @@ { "cell_type": "code", "execution_count": null, - "id": "8f3faac4", + "id": "3d722e25", "metadata": { "title": "Another visualization function" }, @@ -1465,7 +1465,7 @@ { "cell_type": "code", "execution_count": null, - "id": "956658ca", + "id": "04eabebc", "metadata": { "lines_to_next_cell": 0 }, @@ -1481,7 +1481,7 @@ }, { "cell_type": "markdown", - "id": "8df09e0c", + "id": "46e50c88", "metadata": { "lines_to_next_cell": 0 }, @@ -1497,7 +1497,7 @@ }, { "cell_type": "markdown", - "id": "59557649", + "id": "a9b101b6", "metadata": { "lines_to_next_cell": 0 }, @@ -1522,7 +1522,7 @@ }, { "cell_type": "markdown", - "id": "0e01c5da", + "id": "246fda63", "metadata": { "lines_to_next_cell": 0 }, @@ -1536,7 +1536,7 @@ { "cell_type": "code", "execution_count": null, - "id": "a9b88599", + "id": "2e9602ae", "metadata": { "lines_to_next_cell": 0 }, @@ -1556,7 +1556,7 @@ { "cell_type": "code", "execution_count": null, - "id": "f402e79a", + "id": "a6039426", "metadata": { "lines_to_next_cell": 0 }, @@ -1592,7 +1592,7 @@ }, { "cell_type": "markdown", - "id": "fcefb0bb", + "id": "62c10f55", "metadata": { "lines_to_next_cell": 0 }, @@ -1606,7 +1606,7 @@ }, { "cell_type": "markdown", - "id": "01f9a614", + "id": "f35c78d1", "metadata": { "lines_to_next_cell": 0 }, @@ -1622,23 +1622,25 @@ }, { "cell_type": "markdown", - "id": "3bb20dcd", + "id": "ce0defa7", "metadata": { "lines_to_next_cell": 0 }, "source": [ "

Checkpoint 4

\n", "At this point you have:\n", - "- Created a StarGAN that can change the class of an image\n", - "- Evaluated the StarGAN on unseen data\n", - "- Used the StarGAN to create counterfactual images\n", - "- Used the counterfactual images to highlight the differences between classes\n", - "- Interpolated between the images to see how the classifier behaves\n" + "
    \n", + "
  • Created a StarGAN that can change the class of an image
  • \n", + "
  • Evaluated the StarGAN on unseen data
  • \n", + "
  • Used the StarGAN to create counterfactual images
  • \n", + "
  • Used the counterfactual images to highlight the differences between classes
  • \n", + "
  • Interpolated between the images to see how the classifier behaves
  • \n", + "
" ] }, { "cell_type": "markdown", - "id": "d546c694", + "id": "bbd7820d", "metadata": { "lines_to_next_cell": 0 }, @@ -1650,7 +1652,7 @@ }, { "cell_type": "markdown", - "id": "bc3ed726", + "id": "141b4181", "metadata": {}, "source": [ "

Task 5.1: Explore the style space

\n", @@ -1662,7 +1664,7 @@ { "cell_type": "code", "execution_count": null, - "id": "718ce53b", + "id": "b6e9c103", "metadata": {}, "outputs": [], "source": [ @@ -1697,7 +1699,7 @@ }, { "cell_type": "markdown", - "id": "ca7a48a9", + "id": "c01c00f7", "metadata": { "lines_to_next_cell": 0 }, @@ -1713,7 +1715,7 @@ { "cell_type": "code", "execution_count": null, - "id": "e814f376", + "id": "11b7d4c9", "metadata": { "lines_to_next_cell": 0 }, @@ -1740,7 +1742,7 @@ }, { "cell_type": "markdown", - "id": "bbdc2fa9", + "id": "2c53c235", "metadata": { "lines_to_next_cell": 0 }, @@ -1754,7 +1756,7 @@ }, { "cell_type": "markdown", - "id": "3fe20ca4", + "id": "9d81df42", "metadata": { "lines_to_next_cell": 0 }, @@ -1771,7 +1773,7 @@ { "cell_type": "code", "execution_count": null, - "id": "ff536dd4", + "id": "081a67e4", "metadata": {}, "outputs": [], "source": [ @@ -1793,7 +1795,7 @@ }, { "cell_type": "markdown", - "id": "d19016ff", + "id": "1d74498c", "metadata": {}, "source": [ "

Questions

\n", @@ -1805,17 +1807,19 @@ }, { "cell_type": "markdown", - "id": "24c11487", + "id": "1efd608c", "metadata": {}, "source": [ "

Checkpoint 5

\n", "Congratulations! You have made it to the end of the exercise!\n", "You have:\n", - "- Created a StarGAN that can change the class of an image\n", - "- Evaluated the StarGAN on unseen data\n", - "- Used the StarGAN to create counterfactual images\n", - "- Used the counterfactual images to highlight the differences between classes\n", - "- Used the style space to understand the differences between classes\n", + "
    \n", + "
  • Created a StarGAN that can change the class of an image
  • \n", + "
  • Evaluated the StarGAN on unseen data
  • \n", + "
  • Used the StarGAN to create counterfactual images
  • \n", + "
  • Used the counterfactual images to highlight the differences between classes
  • \n", + "
  • Used the style space to understand the differences between classes
  • \n", + "
\n", "\n", "If you have any questions, feel free to ask them in the chat!\n", "And check the Solutions exercise for a definite answer to how these classes are defined!" @@ -1823,7 +1827,7 @@ }, { "cell_type": "markdown", - "id": "36582123", + "id": "4f71144a", "metadata": {}, "source": [ "# Bonus!\n", diff --git a/solution.ipynb b/solution.ipynb index e1f331f..b2359d5 100644 --- a/solution.ipynb +++ b/solution.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "1b3bf19e", + "id": "508f55c4", "metadata": { "lines_to_next_cell": 0, "tags": [] @@ -29,7 +29,7 @@ }, { "cell_type": "markdown", - "id": "067e738b", + "id": "88480b87", "metadata": { "lines_to_next_cell": 0 }, @@ -41,7 +41,7 @@ }, { "cell_type": "markdown", - "id": "b913b71a", + "id": "62e6288c", "metadata": {}, "source": [ "\n", @@ -54,7 +54,7 @@ { "cell_type": "code", "execution_count": null, - "id": "98283047", + "id": "524e722d", "metadata": { "lines_to_next_cell": 0 }, @@ -68,7 +68,7 @@ }, { "cell_type": "markdown", - "id": "1afbe1b3", + "id": "c9c22ad8", "metadata": { "lines_to_next_cell": 0 }, @@ -84,7 +84,7 @@ { "cell_type": "code", "execution_count": null, - "id": "5bef908b", + "id": "25fb11b9", "metadata": {}, "outputs": [], "source": [ @@ -102,7 +102,7 @@ }, { "cell_type": "markdown", - "id": "3e27811b", + "id": "cc3c08e3", "metadata": { "lines_to_next_cell": 0 }, @@ -113,7 +113,7 @@ }, { "cell_type": "markdown", - "id": "c554ff65", + "id": "254aef78", "metadata": { "lines_to_next_cell": 0 }, @@ -130,7 +130,7 @@ { "cell_type": "code", "execution_count": null, - "id": "885618d6", + "id": "469219c6", "metadata": { "tags": [ "solution" @@ -154,7 +154,7 @@ }, { "cell_type": "markdown", - "id": "9460ef99", + "id": "61dbe630", "metadata": { "lines_to_next_cell": 0 }, @@ -165,7 +165,7 @@ { "cell_type": "code", "execution_count": null, - "id": "e35f652a", + "id": "4ffba779", "metadata": { "lines_to_next_cell": 0 }, @@ -194,7 +194,7 @@ }, { "cell_type": "markdown", - "id": "714d0118", + "id": "7be4250a", "metadata": { "lines_to_next_cell": 0 }, @@ -211,7 +211,7 @@ }, { "cell_type": "markdown", - "id": "2b3080ec", + "id": "5f8c898d", "metadata": {}, "source": [ "# Part 2: Using Integrated Gradients to find what the classifier knows\n", @@ -221,7 +221,7 @@ }, { "cell_type": "markdown", - "id": "42bf258c", + "id": "a284d49b", "metadata": {}, "source": [ "## Attributions through integrated gradients\n", @@ -234,7 +234,7 @@ { "cell_type": "code", "execution_count": null, - "id": "9dc58dab", + "id": "925ce3e7", "metadata": { "tags": [] }, @@ -252,7 +252,7 @@ }, { "cell_type": "markdown", - "id": "50185c99", + "id": "b72a7b5a", "metadata": { "tags": [] }, @@ -268,7 +268,7 @@ { "cell_type": "code", "execution_count": null, - "id": "a8bce89a", + "id": "9a722cf0", "metadata": { "tags": [ "solution" @@ -292,7 +292,7 @@ { "cell_type": "code", "execution_count": null, - "id": "eed52045", + "id": "3a0c2413", "metadata": { "tags": [] }, @@ -305,7 +305,7 @@ }, { "cell_type": "markdown", - "id": "be5a007b", + "id": "1941efec", "metadata": { "lines_to_next_cell": 2, "tags": [] @@ -317,7 +317,7 @@ { "cell_type": "code", "execution_count": null, - "id": "5c0780f6", + "id": "3c89c686", "metadata": { "tags": [] }, @@ -345,7 +345,7 @@ { "cell_type": "code", "execution_count": null, - "id": "30041689", + "id": "e10dc24d", "metadata": { "tags": [] }, @@ -358,7 +358,7 @@ }, { "cell_type": "markdown", - "id": "c0d46960", + "id": "91f7fb24", "metadata": { "lines_to_next_cell": 2 }, @@ -372,7 +372,7 @@ }, { "cell_type": "markdown", - "id": "477cd87c", + "id": "5e1f90c7", "metadata": { "lines_to_next_cell": 0 }, @@ -385,7 +385,7 @@ { "cell_type": "code", "execution_count": null, - "id": "ed247a59", + "id": "598a1f0a", "metadata": {}, "outputs": [], "source": [ @@ -410,7 +410,7 @@ }, { "cell_type": "markdown", - "id": "746de08d", + "id": "d873aa39", "metadata": { "lines_to_next_cell": 0 }, @@ -424,7 +424,7 @@ }, { "cell_type": "markdown", - "id": "8c5ea46b", + "id": "05d0cef7", "metadata": {}, "source": [ "\n", @@ -450,7 +450,7 @@ }, { "cell_type": "markdown", - "id": "eaacace4", + "id": "43b62c80", "metadata": {}, "source": [ "

Task 2.3: Use random noise as a baseline

\n", @@ -462,7 +462,7 @@ { "cell_type": "code", "execution_count": null, - "id": "35062d2c", + "id": "1988179e", "metadata": { "tags": [ "solution" @@ -488,7 +488,7 @@ }, { "cell_type": "markdown", - "id": "bb810907", + "id": "f3c3e97c", "metadata": { "tags": [] }, @@ -502,7 +502,7 @@ { "cell_type": "code", "execution_count": null, - "id": "367cb0b3", + "id": "5370fe7e", "metadata": { "tags": [ "solution" @@ -532,7 +532,7 @@ }, { "cell_type": "markdown", - "id": "342b9336", + "id": "7abf9f27", "metadata": { "tags": [] }, @@ -548,7 +548,7 @@ }, { "cell_type": "markdown", - "id": "96d713fd", + "id": "c37b4cc9", "metadata": {}, "source": [ "

BONUS Task: Using different attributions.

\n", @@ -562,7 +562,7 @@ }, { "cell_type": "markdown", - "id": "f6118ade", + "id": "b08a5590", "metadata": {}, "source": [ "

Checkpoint 2

\n", @@ -582,7 +582,7 @@ }, { "cell_type": "markdown", - "id": "12781ee6", + "id": "13b502ee", "metadata": { "lines_to_next_cell": 0 }, @@ -610,7 +610,7 @@ }, { "cell_type": "markdown", - "id": "6dd2e900", + "id": "a39a4234", "metadata": { "lines_to_next_cell": 0, "tags": [] @@ -633,7 +633,7 @@ { "cell_type": "code", "execution_count": null, - "id": "e489a340", + "id": "ccbd9243", "metadata": {}, "outputs": [], "source": [ @@ -665,7 +665,7 @@ }, { "cell_type": "markdown", - "id": "d77aa8d1", + "id": "3d75236e", "metadata": { "lines_to_next_cell": 0 }, @@ -680,7 +680,7 @@ { "cell_type": "code", "execution_count": null, - "id": "8ec9d68a", + "id": "f0b9e1fa", "metadata": { "tags": [ "solution" @@ -697,7 +697,7 @@ }, { "cell_type": "markdown", - "id": "50f5d295", + "id": "8cc42dea", "metadata": { "tags": [] }, @@ -712,7 +712,7 @@ }, { "cell_type": "markdown", - "id": "f4dd16b3", + "id": "afa65120", "metadata": { "lines_to_next_cell": 0, "tags": [] @@ -729,7 +729,7 @@ { "cell_type": "code", "execution_count": null, - "id": "7152c016", + "id": "00157769", "metadata": { "lines_to_next_cell": 0, "tags": [ @@ -743,7 +743,7 @@ }, { "cell_type": "markdown", - "id": "49ff9e3a", + "id": "5b47154f", "metadata": { "lines_to_next_cell": 0 }, @@ -754,7 +754,7 @@ { "cell_type": "code", "execution_count": null, - "id": "b0f0fb98", + "id": "fb6eecc1", "metadata": {}, "outputs": [], "source": [ @@ -764,7 +764,7 @@ }, { "cell_type": "markdown", - "id": "23b21a32", + "id": "c79251f6", "metadata": { "lines_to_next_cell": 0, "tags": [] @@ -782,7 +782,7 @@ { "cell_type": "code", "execution_count": null, - "id": "29678f3b", + "id": "810cae99", "metadata": { "lines_to_next_cell": 0 }, @@ -794,7 +794,7 @@ }, { "cell_type": "markdown", - "id": "6c069dc6", + "id": "19e0a570", "metadata": { "lines_to_next_cell": 0, "tags": [] @@ -813,7 +813,7 @@ { "cell_type": "code", "execution_count": null, - "id": "321515da", + "id": "8eb2fe39", "metadata": {}, "outputs": [], "source": [ @@ -822,7 +822,7 @@ }, { "cell_type": "markdown", - "id": "060fd784", + "id": "7ffb373b", "metadata": { "lines_to_next_cell": 0, "tags": [] @@ -838,7 +838,7 @@ { "cell_type": "code", "execution_count": null, - "id": "8c85a285", + "id": "1a5c8832", "metadata": {}, "outputs": [], "source": [ @@ -847,7 +847,7 @@ }, { "cell_type": "markdown", - "id": "511db0c6", + "id": "2b585f2b", "metadata": { "lines_to_next_cell": 0, "tags": [] @@ -859,7 +859,7 @@ { "cell_type": "code", "execution_count": null, - "id": "6c3dfe27", + "id": "e957ad43", "metadata": {}, "outputs": [], "source": [ @@ -872,7 +872,7 @@ }, { "cell_type": "markdown", - "id": "aca01927", + "id": "204a9236", "metadata": { "lines_to_next_cell": 0, "tags": [] @@ -886,7 +886,7 @@ { "cell_type": "code", "execution_count": null, - "id": "c0bb0943", + "id": "b87e8d1e", "metadata": {}, "outputs": [], "source": [ @@ -898,7 +898,7 @@ }, { "cell_type": "markdown", - "id": "1c17e308", + "id": "618bebe4", "metadata": { "lines_to_next_cell": 0, "tags": [] @@ -918,7 +918,7 @@ { "cell_type": "code", "execution_count": null, - "id": "c378d7f9", + "id": "258d6086", "metadata": {}, "outputs": [], "source": [ @@ -942,7 +942,7 @@ { "cell_type": "code", "execution_count": null, - "id": "07f4fecf", + "id": "724e40db", "metadata": { "lines_to_next_cell": 2 }, @@ -954,7 +954,7 @@ }, { "cell_type": "markdown", - "id": "452728c7", + "id": "4ad4b22d", "metadata": { "lines_to_next_cell": 0, "tags": [] @@ -976,7 +976,7 @@ }, { "cell_type": "markdown", - "id": "9a73a3eb", + "id": "271bc482", "metadata": { "lines_to_next_cell": 0, "tags": [] @@ -988,7 +988,7 @@ { "cell_type": "code", "execution_count": null, - "id": "a32e6ffb", + "id": "18724935", "metadata": { "lines_to_next_cell": 2, "tags": [ @@ -1058,7 +1058,7 @@ }, { "cell_type": "markdown", - "id": "2b1901cd", + "id": "e323e6f7", "metadata": { "lines_to_next_cell": 0, "tags": [] @@ -1070,7 +1070,7 @@ { "cell_type": "code", "execution_count": null, - "id": "32eebf00", + "id": "fd20bc6e", "metadata": {}, "outputs": [], "source": [ @@ -1086,7 +1086,7 @@ }, { "cell_type": "markdown", - "id": "fd98dc27", + "id": "240c3164", "metadata": { "tags": [] }, @@ -1101,7 +1101,7 @@ }, { "cell_type": "markdown", - "id": "c74e6127", + "id": "deb3d3a0", "metadata": { "lines_to_next_cell": 0, "tags": [] @@ -1113,7 +1113,7 @@ { "cell_type": "code", "execution_count": null, - "id": "d38a9dfd", + "id": "d3f7104a", "metadata": {}, "outputs": [], "source": [ @@ -1135,7 +1135,7 @@ }, { "cell_type": "markdown", - "id": "bd940bab", + "id": "6c7e4472", "metadata": { "tags": [] }, @@ -1151,7 +1151,7 @@ }, { "cell_type": "markdown", - "id": "24e48cf3", + "id": "b3c5bbd0", "metadata": { "tags": [] }, @@ -1161,7 +1161,7 @@ }, { "cell_type": "markdown", - "id": "1f56a54f", + "id": "7c8c76fe", "metadata": { "tags": [] }, @@ -1178,7 +1178,7 @@ { "cell_type": "code", "execution_count": null, - "id": "8f572d41", + "id": "3d4f212c", "metadata": { "title": "Loading the test dataset" }, @@ -1198,7 +1198,7 @@ }, { "cell_type": "markdown", - "id": "dc260633", + "id": "0394fb82", "metadata": { "lines_to_next_cell": 0, "tags": [] @@ -1210,7 +1210,7 @@ { "cell_type": "code", "execution_count": null, - "id": "0429a766", + "id": "f7e02a34", "metadata": {}, "outputs": [], "source": [ @@ -1223,7 +1223,7 @@ }, { "cell_type": "markdown", - "id": "80f4b326", + "id": "bc9acb76", "metadata": { "lines_to_next_cell": 0 }, @@ -1233,7 +1233,7 @@ }, { "cell_type": "markdown", - "id": "8443a95a", + "id": "54fb79ed", "metadata": { "lines_to_next_cell": 0 }, @@ -1251,7 +1251,7 @@ { "cell_type": "code", "execution_count": null, - "id": "e448e313", + "id": "25cc00c8", "metadata": { "tags": [ "solution" @@ -1288,7 +1288,7 @@ }, { "cell_type": "markdown", - "id": "9a2a6a90", + "id": "255934ec", "metadata": { "lines_to_next_cell": 0, "tags": [] @@ -1300,7 +1300,7 @@ { "cell_type": "code", "execution_count": null, - "id": "ca2d44e7", + "id": "6daca8ca", "metadata": {}, "outputs": [], "source": [ @@ -1313,7 +1313,7 @@ }, { "cell_type": "markdown", - "id": "63966675", + "id": "18186b93", "metadata": { "tags": [] }, @@ -1328,7 +1328,7 @@ }, { "cell_type": "markdown", - "id": "413852c4", + "id": "29b63b00", "metadata": { "tags": [] }, @@ -1339,7 +1339,7 @@ { "cell_type": "code", "execution_count": null, - "id": "65d61fc4", + "id": "411b8730", "metadata": {}, "outputs": [], "source": [ @@ -1353,7 +1353,7 @@ }, { "cell_type": "markdown", - "id": "b926cdc6", + "id": "dcce6a0c", "metadata": { "tags": [] }, @@ -1368,7 +1368,7 @@ }, { "cell_type": "markdown", - "id": "4aaf7349", + "id": "106316e5", "metadata": { "lines_to_next_cell": 0 }, @@ -1383,7 +1383,7 @@ { "cell_type": "code", "execution_count": null, - "id": "ac005791", + "id": "152bed37", "metadata": {}, "outputs": [], "source": [ @@ -1404,7 +1404,7 @@ { "cell_type": "code", "execution_count": null, - "id": "8f3faac4", + "id": "3d722e25", "metadata": { "title": "Another visualization function" }, @@ -1433,7 +1433,7 @@ { "cell_type": "code", "execution_count": null, - "id": "956658ca", + "id": "04eabebc", "metadata": { "lines_to_next_cell": 0 }, @@ -1449,7 +1449,7 @@ }, { "cell_type": "markdown", - "id": "8df09e0c", + "id": "46e50c88", "metadata": { "lines_to_next_cell": 0 }, @@ -1465,7 +1465,7 @@ }, { "cell_type": "markdown", - "id": "59557649", + "id": "a9b101b6", "metadata": { "lines_to_next_cell": 0 }, @@ -1490,7 +1490,7 @@ }, { "cell_type": "markdown", - "id": "0e01c5da", + "id": "246fda63", "metadata": { "lines_to_next_cell": 0 }, @@ -1504,7 +1504,7 @@ { "cell_type": "code", "execution_count": null, - "id": "a9b88599", + "id": "2e9602ae", "metadata": { "lines_to_next_cell": 0 }, @@ -1524,7 +1524,7 @@ { "cell_type": "code", "execution_count": null, - "id": "f402e79a", + "id": "a6039426", "metadata": { "lines_to_next_cell": 0 }, @@ -1560,7 +1560,7 @@ }, { "cell_type": "markdown", - "id": "fcefb0bb", + "id": "62c10f55", "metadata": { "lines_to_next_cell": 0 }, @@ -1574,7 +1574,7 @@ }, { "cell_type": "markdown", - "id": "01f9a614", + "id": "f35c78d1", "metadata": { "lines_to_next_cell": 0 }, @@ -1590,23 +1590,25 @@ }, { "cell_type": "markdown", - "id": "3bb20dcd", + "id": "ce0defa7", "metadata": { "lines_to_next_cell": 0 }, "source": [ "

Checkpoint 4

\n", "At this point you have:\n", - "- Created a StarGAN that can change the class of an image\n", - "- Evaluated the StarGAN on unseen data\n", - "- Used the StarGAN to create counterfactual images\n", - "- Used the counterfactual images to highlight the differences between classes\n", - "- Interpolated between the images to see how the classifier behaves\n" + "
    \n", + "
  • Created a StarGAN that can change the class of an image
  • \n", + "
  • Evaluated the StarGAN on unseen data
  • \n", + "
  • Used the StarGAN to create counterfactual images
  • \n", + "
  • Used the counterfactual images to highlight the differences between classes
  • \n", + "
  • Interpolated between the images to see how the classifier behaves
  • \n", + "
" ] }, { "cell_type": "markdown", - "id": "d546c694", + "id": "bbd7820d", "metadata": { "lines_to_next_cell": 0 }, @@ -1618,7 +1620,7 @@ }, { "cell_type": "markdown", - "id": "bc3ed726", + "id": "141b4181", "metadata": {}, "source": [ "

Task 5.1: Explore the style space

\n", @@ -1630,7 +1632,7 @@ { "cell_type": "code", "execution_count": null, - "id": "718ce53b", + "id": "b6e9c103", "metadata": {}, "outputs": [], "source": [ @@ -1665,7 +1667,7 @@ }, { "cell_type": "markdown", - "id": "ca7a48a9", + "id": "c01c00f7", "metadata": { "lines_to_next_cell": 0 }, @@ -1681,7 +1683,7 @@ { "cell_type": "code", "execution_count": null, - "id": "e814f376", + "id": "11b7d4c9", "metadata": { "lines_to_next_cell": 0 }, @@ -1708,7 +1710,7 @@ }, { "cell_type": "markdown", - "id": "bbdc2fa9", + "id": "2c53c235", "metadata": { "lines_to_next_cell": 0 }, @@ -1722,7 +1724,7 @@ }, { "cell_type": "markdown", - "id": "3fe20ca4", + "id": "9d81df42", "metadata": { "lines_to_next_cell": 0 }, @@ -1739,7 +1741,7 @@ { "cell_type": "code", "execution_count": null, - "id": "ff536dd4", + "id": "081a67e4", "metadata": {}, "outputs": [], "source": [ @@ -1761,7 +1763,7 @@ }, { "cell_type": "markdown", - "id": "d19016ff", + "id": "1d74498c", "metadata": {}, "source": [ "

Questions

\n", @@ -1773,17 +1775,19 @@ }, { "cell_type": "markdown", - "id": "24c11487", + "id": "1efd608c", "metadata": {}, "source": [ "

Checkpoint 5

\n", "Congratulations! You have made it to the end of the exercise!\n", "You have:\n", - "- Created a StarGAN that can change the class of an image\n", - "- Evaluated the StarGAN on unseen data\n", - "- Used the StarGAN to create counterfactual images\n", - "- Used the counterfactual images to highlight the differences between classes\n", - "- Used the style space to understand the differences between classes\n", + "
    \n", + "
  • Created a StarGAN that can change the class of an image
  • \n", + "
  • Evaluated the StarGAN on unseen data
  • \n", + "
  • Used the StarGAN to create counterfactual images
  • \n", + "
  • Used the counterfactual images to highlight the differences between classes
  • \n", + "
  • Used the style space to understand the differences between classes
  • \n", + "
\n", "\n", "If you have any questions, feel free to ask them in the chat!\n", "And check the Solutions exercise for a definite answer to how these classes are defined!" @@ -1791,7 +1795,7 @@ }, { "cell_type": "markdown", - "id": "36582123", + "id": "4f71144a", "metadata": {}, "source": [ "# Bonus!\n", @@ -1806,7 +1810,7 @@ }, { "cell_type": "markdown", - "id": "44f3ac5f", + "id": "9a7ef223", "metadata": { "tags": [ "solution" @@ -1820,7 +1824,7 @@ { "cell_type": "code", "execution_count": null, - "id": "3144a680", + "id": "ce759160", "metadata": { "tags": [ "solution"