{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.12.13","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":" [code]","metadata":{"_uuid":"cb2d23f6-5bec-4d89-a3bb-e893c9b25eb5","_cell_guid":"48893999-15fa-4fb7-b679-d5e864901dc2","trusted":true,"collapsed":false,"jupyter":{"outputs_hidden":false},"execution":{"iopub.status.busy":"2026-08-18T19:06:42.812837Z","iopub.execute_input":"2026-08-18T19:06:42.81378Z","iopub.status.idle":"2026-08-18T19:06:42.821424Z","shell.execute_reply.started":"2026-08-18T19:06:42.813741Z","shell.execute_reply":"2026-08-18T19:06:42.819886Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":" [code]","metadata":{"_uuid":"a894161c-b930-44a2-bcca-1a382b1bbd2b","_cell_guid":"e9630a88-5ebf-4f3d-8af8-575208e07e66","trusted":true,"collapsed":false,"jupyter":{"outputs_hidden":false},"execution":{"iopub.status.busy":"2026-08-18T19:06:42.822365Z","iopub.status.idle":"2026-08-18T19:06:42.822766Z","shell.execute_reply.started":"2026-08-18T19:06:42.822544Z","shell.execute_reply":"2026-08-18T19:06:42.82257Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":" [code]","metadata":{"_uuid":"85418edb-79aa-4e02-bd42-3d078c3b7c5d","_cell_guid":"a7f89b69-a0e5-4b45-b61a-545fc5ab05d4","trusted":true,"collapsed":false,"jupyter":{"outputs_hidden":false},"execution":{"iopub.status.busy":"2026-08-18T19:06:42.824035Z","iopub.status.idle":"2026-08-18T19:06:42.824396Z","shell.execute_reply.started":"2026-08-18T19:06:42.824181Z","shell.execute_reply":"2026-08-18T19:06:42.824236Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":" [code]","metadata":{"_uuid":"52e5cdf3-4f22-4dd1-a693-f4f42338e6e7","_cell_guid":"9e937ad7-ef60-4c97-9848-fe26b808d5e3","trusted":true,"collapsed":false,"jupyter":{"outputs_hidden":false},"execution":{"iopub.status.busy":"2026-08-18T19:06:42.826003Z","iopub.status.idle":"2026-08-18T19:06:42.826401Z","shell.execute_reply.started":"2026-08-18T19:06:42.826168Z","shell.execute_reply":"2026-08-18T19:06:42.826183Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"# I'm something of a painter myself (Forker)","metadata":{"_uuid":"db488e0c-0581-4736-bb19-6fe3533657fc","_cell_guid":"6e62e89e-393c-412d-9f27-b4134b4c4689","trusted":true,"collapsed":false,"jupyter":{"outputs_hidden":false}}},{"cell_type":"code","source":"import torch\nimport torch.nn as nn\nimport torchvision\nimport torchvision.transforms as transforms\nimport torchvision.datasets as datasets\nimport torch.utils.data as data\nimport matplotlib.pyplot as plt","metadata":{"_uuid":"5a6b6225-4140-40dc-87a4-a5b92a8c6d27","_cell_guid":"c7484ac1-71e5-4b6f-b7ce-a991f33899ab","trusted":true,"collapsed":false,"execution":{"iopub.status.busy":"2026-08-18T19:07:02.951015Z","iopub.execute_input":"2026-08-18T19:07:02.951757Z","iopub.status.idle":"2026-08-18T19:07:02.955718Z","shell.execute_reply.started":"2026-08-18T19:07:02.951727Z","shell.execute_reply":"2026-08-18T19:07:02.954942Z"},"jupyter":{"outputs_hidden":false}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# MY WAY - OR THE HIGHWAY!\n!mkdir -p data/images\n!cp /kaggle/input/gan-getting-started/monet_jpg/* data/images\n!cp /kaggle/input/gan-getting-started/photo_jpg/* data/images","metadata":{"_uuid":"e1b187f5-00e0-4780-b1a9-4f10ac7b38da","_cell_guid":"42acc399-d717-4527-adf0-8e92a382f4a8","trusted":true,"collapsed":false,"execution":{"iopub.status.busy":"2026-08-18T19:07:05.269859Z","iopub.execute_input":"2026-08-18T19:07:05.270484Z","iopub.status.idle":"2026-08-18T19:07:12.659007Z","shell.execute_reply.started":"2026-08-18T19:07:05.270454Z","shell.execute_reply":"2026-08-18T19:07:12.658148Z"},"jupyter":{"outputs_hidden":false}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"data_directory = \"/kaggle/working/data\"\n\ntransform = transforms.Compose([\n    transforms.ToTensor(),\n    transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))\n])\n\ndataset = datasets.ImageFolder(\n    root=data_directory,\n    transform=transform\n)\n\ndataset","metadata":{"_uuid":"9c73e53b-8a0d-4c7a-9c90-b17ba4259b01","_cell_guid":"7fbcce1a-616f-4e96-8b45-705da940554a","trusted":true,"collapsed":false,"execution":{"iopub.status.busy":"2026-08-18T19:07:52.204099Z","iopub.execute_input":"2026-08-18T19:07:52.20444Z","iopub.status.idle":"2026-08-18T19:07:52.227383Z","shell.execute_reply.started":"2026-08-18T19:07:52.204414Z","shell.execute_reply":"2026-08-18T19:07:52.226697Z"},"jupyter":{"outputs_hidden":false}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"dataloader = data.DataLoader(\n    dataset=dataset,\n    batch_size=64,\n    shuffle=True,\n    num_workers=2\n)\n\nlen(dataloader)","metadata":{"_uuid":"fd868219-449a-4c54-9fee-c5b419dd213e","_cell_guid":"ff18c027-60ed-468c-8c09-a01d3db84dce","trusted":true,"collapsed":false,"execution":{"iopub.status.busy":"2026-08-18T19:07:58.795017Z","iopub.execute_input":"2026-08-18T19:07:58.795435Z","iopub.status.idle":"2026-08-18T19:07:58.801332Z","shell.execute_reply.started":"2026-08-18T19:07:58.795408Z","shell.execute_reply":"2026-08-18T19:07:58.800341Z"},"jupyter":{"outputs_hidden":false}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Woah, cool picture\n\nX_batch, y_batch = next(iter(dataloader))\n\nimage = X_batch[0].permute(1, 2, 0)\nimage = (image + 1) / 2\n\nplt.title(\"Sample from the dataset\")\nplt.imshow(image)\nplt.axis(False)","metadata":{"_uuid":"71ea8569-b508-40f8-bebc-f977c4a10b91","_cell_guid":"4e66a8e8-3d44-48f4-8f45-7394a464abce","trusted":true,"collapsed":false,"execution":{"iopub.status.busy":"2026-08-18T19:08:00.517018Z","iopub.execute_input":"2026-08-18T19:08:00.517699Z","iopub.status.idle":"2026-08-18T19:08:01.016276Z","shell.execute_reply.started":"2026-08-18T19:08:00.51767Z","shell.execute_reply":"2026-08-18T19:08:01.015437Z"},"jupyter":{"outputs_hidden":false}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Knowing that the version number in the class name will remain the same\n# Regardless of how many changes are made...\n# Fills you with determination\n\nclass GeneratorV1(nn.Module):\n    def __init__(self):\n        super(GeneratorV1, self).__init__()\n        self.layers = nn.Sequential(\n            nn.ConvTranspose2d(100, 512, 4, 1, 0, bias=False),\n            nn.BatchNorm2d(512),\n            nn.ReLU(True),\n\n            nn.ConvTranspose2d(512, 256, 4, 2, 1, bias=False),\n            nn.BatchNorm2d(256),\n            nn.ReLU(True),\n\n            nn.ConvTranspose2d(256, 128, 4, 2, 1, bias=False),\n            nn.BatchNorm2d(128),\n            nn.ReLU(True),\n            \n            nn.ConvTranspose2d(128, 64, 4, 2, 1, bias=False),\n            nn.BatchNorm2d(64),\n            nn.ReLU(True),\n            \n            nn.ConvTranspose2d(64, 32, 4, 2, 1, bias=False),\n            nn.BatchNorm2d(32),\n            nn.ReLU(True),\n            \n            nn.ConvTranspose2d(32, 16, 4, 2, 1, bias=False),\n            nn.BatchNorm2d(16),\n            nn.ReLU(True),\n\n            nn.ConvTranspose2d(16, 3, 4, 2, 1, bias=False),\n            nn.Tanh()\n        )\n    \n    def forward(self, X):\n        return self.layers.forward(X)","metadata":{"_uuid":"2e7662cd-2f48-40e6-aacd-ffa30307b2e1","_cell_guid":"c941941d-4a6a-4d7f-b289-4a6586f88a54","trusted":true,"collapsed":false,"execution":{"iopub.status.busy":"2026-08-18T19:08:12.306083Z","iopub.execute_input":"2026-08-18T19:08:12.306936Z","iopub.status.idle":"2026-08-18T19:08:12.313359Z","shell.execute_reply.started":"2026-08-18T19:08:12.306907Z","shell.execute_reply":"2026-08-18T19:08:12.312421Z"},"jupyter":{"outputs_hidden":false}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"class DiscriminatorV1(nn.Module):\n    def __init__(self):\n        super(DiscriminatorV1, self).__init__()\n        self.layers = nn.Sequential(\n            nn.Conv2d(3, 16, 4, 2, 1, bias=False),\n            nn.LeakyReLU(0.2, True),\n            \n            nn.Conv2d(16, 32, 4, 2, 1, bias=False),\n            nn.BatchNorm2d(32),\n            nn.LeakyReLU(0.2, True),\n\n            nn.Conv2d(32, 64, 4, 2, 1, bias=False),\n            nn.BatchNorm2d(64),\n            nn.LeakyReLU(0.2, True),\n            \n            nn.Conv2d(64, 128, 4, 2, 1, bias=False),\n            nn.BatchNorm2d(128),\n            nn.LeakyReLU(0.2, True),\n            \n            nn.Conv2d(128, 256, 4, 2, 1, bias=False),\n            nn.BatchNorm2d(256),\n            nn.LeakyReLU(0.2, True),\n            \n            nn.Conv2d(256, 512, 4, 2, 1, bias=False),\n            nn.BatchNorm2d(512),\n            nn.LeakyReLU(0.2, True),\n            \n            nn.Conv2d(512, 1, 4, 1, 0, bias=False),\n            nn.Sigmoid()\n        )\n\n    def forward(self, X):\n        return self.layers.forward(X).view(-1)","metadata":{"_uuid":"be93b71a-5c42-4904-ad3f-58c4526b7f76","_cell_guid":"f1025dc3-feb9-4477-b9b7-672d64f231c9","trusted":true,"collapsed":false,"execution":{"iopub.status.busy":"2026-08-18T19:08:18.586498Z","iopub.execute_input":"2026-08-18T19:08:18.587238Z","iopub.status.idle":"2026-08-18T19:08:18.594336Z","shell.execute_reply.started":"2026-08-18T19:08:18.587164Z","shell.execute_reply":"2026-08-18T19:08:18.593305Z"},"jupyter":{"outputs_hidden":false}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\n\ngenerator = GeneratorV1().to(device)\ndiscriminator = DiscriminatorV1().to(device)\n\ncriterion = nn.BCELoss()\n\noptimizer_G = torch.optim.Adam(\n    params=generator.parameters(),\n    lr=0.0002,\n    betas=(0.5, 0.999)\n)\noptimizer_D = torch.optim.Adam(\n    params=discriminator.parameters(),\n    lr=0.0002,\n    betas=(0.5, 0.999)\n)","metadata":{"_uuid":"e64d1e87-4d25-4769-85d4-06b869726628","_cell_guid":"d45bfd56-b775-4201-97dd-6b79714c669d","trusted":true,"collapsed":false,"execution":{"iopub.status.busy":"2026-08-18T19:08:23.079983Z","iopub.execute_input":"2026-08-18T19:08:23.080582Z","iopub.status.idle":"2026-08-18T19:08:23.133473Z","shell.execute_reply.started":"2026-08-18T19:08:23.080552Z","shell.execute_reply":"2026-08-18T19:08:23.132902Z"},"jupyter":{"outputs_hidden":false}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"def plot_generator_images(generator):\n    noise = torch.randn(5*6, 100, 1, 1, device=device)\n    images = generator.forward(noise).cpu()\n    for i in range(5*6):\n        plt.subplot(5, 6, i+1)\n        plt.imshow(((images[i] + 1) / 2).detach().permute(1, 2, 0))\n        plt.axis(False)\n        \n#plot_generator_images(GeneratorV1().to(device))\n#plt.show()","metadata":{"_uuid":"77db2576-d87e-492b-8deb-0a7486c8ed5c","_cell_guid":"8722c09a-0f6c-4b0c-9834-f010f93dcb10","trusted":true,"collapsed":false,"execution":{"iopub.status.busy":"2026-08-18T19:08:46.820981Z","iopub.execute_input":"2026-08-18T19:08:46.821795Z","iopub.status.idle":"2026-08-18T19:08:46.826769Z","shell.execute_reply.started":"2026-08-18T19:08:46.821764Z","shell.execute_reply":"2026-08-18T19:08:46.826011Z"},"jupyter":{"outputs_hidden":false}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"image = generator.forward(torch.randn(1, 100, 1, 1, device=device))\ndiscriminator.forward(image)","metadata":{"_uuid":"250a4f77-0e64-4279-b484-8cd907869317","_cell_guid":"c590d98a-5cbf-4d3d-8820-9edb0bde96da","trusted":true,"collapsed":false,"execution":{"iopub.status.busy":"2026-08-18T19:09:17.461577Z","iopub.execute_input":"2026-08-18T19:09:17.462032Z","iopub.status.idle":"2026-08-18T19:09:17.469731Z","shell.execute_reply.started":"2026-08-18T19:09:17.462002Z","shell.execute_reply":"2026-08-18T19:09:17.468621Z"},"jupyter":{"outputs_hidden":false}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Need at least 30 epochs for decent results\nnum_epochs = 100\n\ny_real = torch.ones(64, device=device)\ny_fake = torch.zeros(64, device=device)\n\nfor epoch in range(num_epochs):\n    noise = torch.randn(len(dataloader), 64, 100, 1, 1, device=device)\n    for batch, (X_real, _) in enumerate(dataloader):\n        optimizer_D.zero_grad()\n\n        y_pred = discriminator.forward(X_real.to(device))\n        loss_D_real = criterion(y_pred, y_real[:X_real.size(0)])\n\n        X_fake = generator.forward(noise[batch])\n        y_pred = discriminator.forward(X_fake.detach())\n        loss_D_fake = criterion(y_pred, y_fake)\n\n        loss_D = loss_D_real + loss_D_fake\n        loss_D.backward()\n        optimizer_D.step()\n\n        optimizer_G.zero_grad()\n\n        X_fake = generator.forward(noise[batch])\n        y_pred = discriminator.forward(X_fake)\n        loss_G = criterion(y_pred, y_real)\n\n        loss_G.backward()\n        optimizer_G.step()\n\n        print(f\"[{epoch+1}/{num_epochs}|{batch+1}/{len(dataloader)}] {loss_D:.6f} | {loss_G:.6f}\", end=\"\\r\")\n    print(end=\"\\n\")","metadata":{"_uuid":"8f7a941b-dc81-4c18-b853-56d337c143d1","_cell_guid":"de1bbde7-920f-4d37-a449-8df95dad1421","trusted":true,"collapsed":false,"execution":{"iopub.status.busy":"2026-08-18T19:09:30.381843Z","iopub.execute_input":"2026-08-18T19:09:30.382831Z","iopub.status.idle":"2026-08-18T19:09:30.391616Z","shell.execute_reply.started":"2026-08-18T19:09:30.3828Z","shell.execute_reply":"2026-08-18T19:09:30.390627Z"},"jupyter":{"outputs_hidden":false}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"plot_generator_images(generator)\nplt.show()","metadata":{"_uuid":"b2210be2-7cf2-47e1-bf1a-11b8b1099165","_cell_guid":"6b5ee017-ff0b-4850-8e0b-c181e61965a8","trusted":true,"collapsed":false,"execution":{"iopub.status.busy":"2026-08-18T19:09:34.583075Z","iopub.execute_input":"2026-08-18T19:09:34.58349Z","iopub.status.idle":"2026-08-18T19:09:34.593339Z","shell.execute_reply.started":"2026-08-18T19:09:34.583464Z","shell.execute_reply":"2026-08-18T19:09:34.59238Z"},"jupyter":{"outputs_hidden":false}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Helps a little sometimes\ntorch.cuda.empty_cache()","metadata":{"_uuid":"0a5d639c-c121-4854-a216-c9135680f63e","_cell_guid":"6a3fbac6-14a4-4fa6-9372-08cd910231b5","trusted":true,"collapsed":false,"execution":{"iopub.status.busy":"2026-08-18T19:09:39.675087Z","iopub.execute_input":"2026-08-18T19:09:39.675871Z","iopub.status.idle":"2026-08-18T19:09:39.679293Z","shell.execute_reply.started":"2026-08-18T19:09:39.675839Z","shell.execute_reply":"2026-08-18T19:09:39.678534Z"},"jupyter":{"outputs_hidden":false}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"def generate_best(generator, discriminator, min_rating, count):\n    best_images = []\n    rejected = 0\n    while len(best_images) < count:\n        noise = torch.randn(1, 100, 1, 1, device=device)\n        image = generator.forward(noise)\n        rating = discriminator.forward(image)\n        \n        if rating > min_rating:\n            image = (((image.squeeze().cpu().detach().permute(1, 2, 0).numpy() + 1) / 2) * 255).round().astype(int)\n            best_images.append(image)\n        else:\n            rejected += 1\n            \n        print(\"Generated images:\", len(best_images), rejected, end=\"\\r\")\n    return best_images\n\nbest_images = generate_best(generator, discriminator, min_rating=0.1, count=30)","metadata":{"_uuid":"ecedd0f4-ac5d-4b75-8d49-91de74b690cb","_cell_guid":"7c10fbf0-94ab-497e-8148-c0246549fdc7","trusted":true,"collapsed":false,"execution":{"iopub.status.busy":"2026-08-18T19:09:43.338091Z","iopub.execute_input":"2026-08-18T19:09:43.338687Z","iopub.status.idle":"2026-08-18T19:09:43.348176Z","shell.execute_reply.started":"2026-08-18T19:09:43.338657Z","shell.execute_reply":"2026-08-18T19:09:43.347219Z"},"jupyter":{"outputs_hidden":false}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"def generate_images(generator, batch_count, batch_size):\n    images = []\n    for batch in range(batch_count):\n        noise = torch.randn(batch_size, 100, 1, 1, device=device)\n        raw_images = generator.forward(noise).cpu().detach().permute(0, 2, 3, 1).numpy()\n        for image in raw_images:\n            image = (((image.squeeze() + 1) / 2) * 255).round().astype(int)\n            images.append(image)\n            print(\"Generated images:\", len(images), end=\"\\r\")\n    return images\n\nimages = generate_images(generator, batch_count=30, batch_size=256)","metadata":{"_uuid":"a1c93ad8-2d9c-4a36-b7ea-5c7ddc473bab","_cell_guid":"5aa2577b-1b55-4e3d-9b17-b6a62c99d1b2","trusted":true,"collapsed":false,"execution":{"iopub.status.busy":"2026-08-18T19:09:49.667155Z","iopub.execute_input":"2026-08-18T19:09:49.667653Z","iopub.status.idle":"2026-08-18T19:09:49.678707Z","shell.execute_reply.started":"2026-08-18T19:09:49.667623Z","shell.execute_reply":"2026-08-18T19:09:49.677407Z"},"jupyter":{"outputs_hidden":false}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"#Don't look very nice\n#for i in range(5*6):\n    plt.subplot(5, 6,i+1)\n    plt.imshow(best_images[i])\n    plt.axis(False)","metadata":{"_uuid":"4e8f180a-93c9-452a-a021-1fd6e2c09fb9","_cell_guid":"9d34834c-533b-45b9-83ee-ed8e44b27a5d","trusted":true,"collapsed":false,"execution":{"iopub.status.busy":"2026-08-18T19:11:17.879178Z","iopub.execute_input":"2026-08-18T19:11:17.879647Z","iopub.status.idle":"2026-08-18T19:11:17.885555Z","shell.execute_reply.started":"2026-08-18T19:11:17.87962Z","shell.execute_reply":"2026-08-18T19:11:17.884657Z"},"jupyter":{"outputs_hidden":false}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# These images are generally better\nfor i in range(5*6):\n    plt.subplot(5, 6, i+1)\n    plt.imshow(images[i])\n    plt.axis(False)","metadata":{"_uuid":"55520729-7714-4e58-8c5d-2170312cf5e9","_cell_guid":"c2f69cba-1bae-426c-8e9a-c80068297f6d","trusted":true,"collapsed":false,"execution":{"iopub.status.busy":"2026-08-18T19:11:23.415156Z","iopub.execute_input":"2026-08-18T19:11:23.415617Z","iopub.status.idle":"2026-08-18T19:11:23.483133Z","shell.execute_reply.started":"2026-08-18T19:11:23.415591Z","shell.execute_reply":"2026-08-18T19:11:23.482086Z"},"jupyter":{"outputs_hidden":false}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"import io\nimport zipfile\nimport numpy as np\nfrom PIL import Image\n\nwith zipfile.ZipFile(\"images.zip\", \"w\", zipfile.ZIP_DEFLATED) as zipf:\n    for i, img_array in enumerate(images):\n        img = Image.fromarray(img_array.astype(np.uint8))\n        \n        img_byte_arr = io.BytesIO()\n        img.save(img_byte_arr, format=\"JPEG\")\n        \n        img_byte_data = img_byte_arr.getvalue()\n        \n        zipf.writestr(f\"image_{i+1}.jpg\", img_byte_data)","metadata":{"_uuid":"0675ce63-0c20-4c1d-a085-2aadb4479b59","_cell_guid":"a556c8ed-4e29-4a95-87a6-e28067cc34f3","trusted":true,"collapsed":false,"execution":{"iopub.status.busy":"2026-08-18T19:11:34.93997Z","iopub.execute_input":"2026-08-18T19:11:34.940405Z","iopub.status.idle":"2026-08-18T19:11:34.948085Z","shell.execute_reply.started":"2026-08-18T19:11:34.940377Z","shell.execute_reply":"2026-08-18T19:11:34.947146Z"},"jupyter":{"outputs_hidden":false}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"!rm -rf data","metadata":{"_uuid":"d80dd895-5ce7-487a-a604-b290dcf9b9c4","_cell_guid":"48651eb6-3c68-4b26-9d92-9608d431ba29","trusted":true,"collapsed":false,"execution":{"iopub.status.busy":"2026-08-18T19:11:38.938027Z","iopub.execute_input":"2026-08-18T19:11:38.938906Z","iopub.status.idle":"2026-08-18T19:11:39.071839Z","shell.execute_reply.started":"2026-08-18T19:11:38.938869Z","shell.execute_reply":"2026-08-18T19:11:39.070966Z"},"jupyter":{"outputs_hidden":false}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"\"!rm-rf data\"","metadata":{"_uuid":"8936c764-d36e-47c7-a929-df2d3856780a","_cell_guid":"bd5b55c6-c6c3-48d3-bd00-2f4e0a2ec140","trusted":true,"collapsed":false,"execution":{"iopub.status.busy":"2026-08-18T19:11:40.51989Z","iopub.execute_input":"2026-08-18T19:11:40.520697Z","iopub.status.idle":"2026-08-18T19:11:40.525683Z","shell.execute_reply.started":"2026-08-18T19:11:40.520659Z","shell.execute_reply":"2026-08-18T19:11:40.524826Z"},"jupyter":{"outputs_hidden":false}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"!ls","metadata":{"_uuid":"cea637fb-9c53-41a3-8c4a-0a59e99f928b","_cell_guid":"5058774b-a1c7-43dc-9a02-923e848ab1f4","trusted":true,"collapsed":false,"execution":{"iopub.status.busy":"2026-08-18T19:11:45.561136Z","iopub.execute_input":"2026-08-18T19:11:45.562017Z","iopub.status.idle":"2026-08-18T19:11:45.694677Z","shell.execute_reply.started":"2026-08-18T19:11:45.561975Z","shell.execute_reply":"2026-08-18T19:11:45.693764Z"},"jupyter":{"outputs_hidden":false}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"\"!is\"","metadata":{"_uuid":"0b7d8889-28d6-433a-b41c-274e5cb0861e","_cell_guid":"f068d72d-22eb-46f2-8fc7-a2f4b409ac6e","trusted":true,"collapsed":false,"execution":{"iopub.status.busy":"2026-08-18T19:11:47.240274Z","iopub.execute_input":"2026-08-18T19:11:47.240988Z","iopub.status.idle":"2026-08-18T19:11:47.246652Z","shell.execute_reply.started":"2026-08-18T19:11:47.240956Z","shell.execute_reply":"2026-08-18T19:11:47.245973Z"},"jupyter":{"outputs_hidden":false}},"outputs":[],"execution_count":null}]}