{"metadata":{"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"codemirror_mode":{"name":"ipython","version":3},"file_extension":".py","mimetype":"text/x-python","name":"python","nbconvert_exporter":"python","pygments_lexer":"ipython3","version":"3.10.12"},"kaggle":{"accelerator":"none","dataSources":[{"sourceId":3004,"databundleVersionId":861823,"sourceType":"competition"}],"dockerImageVersionId":30918,"isInternetEnabled":false,"language":"python","sourceType":"notebook","isGpuEnabled":false},"papermill":{"default_parameters":{},"duration":244.261888,"end_time":"2025-03-01T12:19:46.274593","environment_variables":{},"exception":null,"input_path":"__notebook__.ipynb","output_path":"__notebook__.ipynb","parameters":{},"start_time":"2025-03-01T12:15:42.012705","version":"2.6.0"}},"nbformat_minor":4,"nbformat":4,"cells":[{"id":"cec36d64","cell_type":"code","source":"# This Python 3 environment comes with many helpful analytics libraries installed\n# It is defined by the kaggle/python Docker image: https://github.com/kaggle/docker-python\n# For example, here's several helpful packages to load\n\nimport numpy as np # linear algebra\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\n\n# Input data files are available in the read-only \"../input/\" directory\n# For example, running this (by clicking run or pressing Shift+Enter) will list all files under the input directory\n\nimport os\nfor dirname, _, filenames in os.walk('/kaggle/input'):\n    for filename in filenames:\n        print(os.path.join(dirname, filename))\n\n# You can write up to 20GB to the current directory (/kaggle/working/) that gets preserved as output when you create a version using \"Save & Run All\" \n# You can also write temporary files to /kaggle/temp/, but they won't be saved outside of the current session","metadata":{"_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","execution":{"iopub.execute_input":"2025-03-01T12:15:45.753290Z","iopub.status.busy":"2025-03-01T12:15:45.752872Z","iopub.status.idle":"2025-03-01T12:15:46.782547Z","shell.execute_reply":"2025-03-01T12:15:46.781338Z"},"papermill":{"duration":1.03924,"end_time":"2025-03-01T12:15:46.784527","exception":false,"start_time":"2025-03-01T12:15:45.745287","status":"completed"},"tags":[]},"outputs":[],"execution_count":null},{"id":"03c68e79","cell_type":"code","source":"import torch\nfrom torch.autograd import Variable\nfrom torch.utils.data import DataLoader\nimport torch.nn as nn\nfrom sklearn.model_selection import train_test_split\nimport matplotlib.pyplot as plt\n\nimport warnings\nwarnings.filterwarnings(\"ignore\")","metadata":{"execution":{"iopub.execute_input":"2025-03-01T12:15:46.806601Z","iopub.status.busy":"2025-03-01T12:15:46.805943Z","iopub.status.idle":"2025-03-01T12:15:53.065618Z","shell.execute_reply":"2025-03-01T12:15:53.064285Z"},"papermill":{"duration":6.274054,"end_time":"2025-03-01T12:15:53.067676","exception":false,"start_time":"2025-03-01T12:15:46.793622","status":"completed"},"tags":[]},"outputs":[],"execution_count":null},{"id":"3e381744","cell_type":"markdown","source":"### libraries","metadata":{"papermill":{"duration":0.005386,"end_time":"2025-03-01T12:15:53.078953","exception":false,"start_time":"2025-03-01T12:15:53.073567","status":"completed"},"tags":[]}},{"id":"41fc8cd0","cell_type":"markdown","source":"### Prepare Dataset","metadata":{"papermill":{"duration":0.005282,"end_time":"2025-03-01T12:15:53.090027","exception":false,"start_time":"2025-03-01T12:15:53.084745","status":"completed"},"tags":[]}},{"id":"cda58bf1","cell_type":"code","source":"train = pd.read_csv(\"/kaggle/input/digit-recognizer/train.csv\")\n\n# split data into features(pixels) and labels(0-9)\ntargets_numpy = train.label.values\nfeatures_numpy = train.loc[:,train.columns != \"label\"].values / 255\n\nfeatures_train, features_test, targets_train, targets_test = train_test_split(features_numpy,targets_numpy, test_size=0.2,random_state=42)\n\nfeaturesTrain = torch.from_numpy(features_train)\ntargetsTrain = torch.from_numpy(targets_train).type(torch.LongTensor)\n\nfeaturesTest = torch.from_numpy(features_test)\ntargetsTest= torch.from_numpy(targets_test).type(torch.LongTensor)\n\nbatch_size = 100\nn_iters = 10000\nnum_epochs = n_iters / (len(features_train) / batch_size)\nnum_epochs = int(num_epochs)\n\n# pytorch train and test stes\ntrain = torch.utils.data.TensorDataset(featuresTrain,targetsTrain)\ntest = torch.utils.data.TensorDataset(featuresTest,targetsTest)\n\n# data loader\ntrain_loader = DataLoader(train,batch_size=batch_size,shuffle=False)\ntest_loader = DataLoader(test,batch_size=batch_size,shuffle=False)\n\n# Visualize one of the images in the dataset\nplt.imshow(features_numpy[10].reshape(28,28))\nplt.axis(\"off\")\nplt.title(str(targets_numpy[10]))\nplt.savefig('graph.png')\nplt.show()\n","metadata":{"execution":{"iopub.execute_input":"2025-03-01T12:15:53.102955Z","iopub.status.busy":"2025-03-01T12:15:53.102380Z","iopub.status.idle":"2025-03-01T12:15:57.529323Z","shell.execute_reply":"2025-03-01T12:15:57.528140Z"},"papermill":{"duration":4.43565,"end_time":"2025-03-01T12:15:57.531302","exception":false,"start_time":"2025-03-01T12:15:53.095652","status":"completed"},"tags":[]},"outputs":[],"execution_count":null},{"id":"73463cff","cell_type":"markdown","source":"### Create Logistic Regression Model","metadata":{"execution":{"iopub.execute_input":"2025-02-27T20:43:18.021704Z","iopub.status.busy":"2025-02-27T20:43:18.021358Z","iopub.status.idle":"2025-02-27T20:43:18.025565Z","shell.execute_reply":"2025-02-27T20:43:18.024523Z","shell.execute_reply.started":"2025-02-27T20:43:18.021674Z"},"papermill":{"duration":0.005516,"end_time":"2025-03-01T12:15:57.542907","exception":false,"start_time":"2025-03-01T12:15:57.537391","status":"completed"},"tags":[]}},{"id":"805b567a","cell_type":"code","source":"class LogisticRegressionModel(nn.Module):\n    def __init__(self,input_dim,output_dim):\n        super(LogisticRegressionModel,self).__init__()\n        # linear\n        self.linear = nn.Linear(input_dim,output_dim)\n\n    def forward(self,x):\n        out = self.linear(x)\n        return out\n\ninput_dim = 28*28     # size of img\noutput_dim = 10       # 0-9 labels\n\nmodel = LogisticRegressionModel(input_dim,output_dim)\n\n# Cross Entropy Loss\nerror = nn.CrossEntropyLoss()\n\n#SGD Optimizer\nlearning_rate = 0.01\noptimizer = torch.optim.SGD(model.parameters(), lr=learning_rate)\n","metadata":{"execution":{"iopub.execute_input":"2025-03-01T12:15:57.556595Z","iopub.status.busy":"2025-03-01T12:15:57.555745Z","iopub.status.idle":"2025-03-01T12:16:02.821286Z","shell.execute_reply":"2025-03-01T12:16:02.819757Z"},"papermill":{"duration":5.274962,"end_time":"2025-03-01T12:16:02.823573","exception":false,"start_time":"2025-03-01T12:15:57.548611","status":"completed"},"tags":[]},"outputs":[],"execution_count":null},{"id":"caa32c45","cell_type":"markdown","source":"### Training the Model","metadata":{"papermill":{"duration":0.005838,"end_time":"2025-03-01T12:16:02.836454","exception":false,"start_time":"2025-03-01T12:16:02.830616","status":"completed"},"tags":[]}},{"id":"2102c4f2","cell_type":"code","source":"count = 0\nloss_list = []\niteration_list = []\nfor epoch in range(num_epochs):\n    for i, (images,labels) in enumerate(train_loader):\n        # Define Variables\n        train = images.view(-1,28*28).float()\n        labels = labels\n\n        # Clear Gradients\n        optimizer.zero_grad()\n\n        # forward propagation\n        outputs = model(train)\n\n        # Softmax and Cross Entropy Loss\n        loss = error(outputs,labels)\n\n        # Calculate gradients\n        loss.backward()\n\n        # Update parameters\n        optimizer.step()\n\n        count += 1\n\n        # Prediction\n        if count % 50 == 0:\n            # Calculate Accuracy\n            correct = 0\n            total = 0\n            # Predict test dataset\n            for images, labels in test_loader:\n                test = images.view(-1,28*28).float()\n\n                # Forward propagation\n                outputs = model(test)\n\n\n                # get predictions from the max value\n                predicted = torch.max(outputs.data,1)[1]\n                \n                # Total correct predictions\n                correct += (predicted == labels).sum()\n\n            accuracy = 100 * correct / float(total)\n\n            # store loss and iteration\n            loss_list.append(loss.data)\n            iteration_list.append(count)\n            \n        if count % 500 == 0:\n            print('Iteration: {}  Loss: {}  Accuracy: {}%'.format(count, loss.data, accuracy))\n\n\n\n\n\n\n\n\n","metadata":{"execution":{"iopub.execute_input":"2025-03-01T12:16:02.850826Z","iopub.status.busy":"2025-03-01T12:16:02.850240Z","iopub.status.idle":"2025-03-01T12:16:49.646312Z","shell.execute_reply":"2025-03-01T12:16:49.644982Z"},"papermill":{"duration":46.805915,"end_time":"2025-03-01T12:16:49.648512","exception":false,"start_time":"2025-03-01T12:16:02.842597","status":"completed"},"tags":[]},"outputs":[],"execution_count":null},{"id":"ec028563","cell_type":"markdown","source":"## Artificial Neural Network (ANN)","metadata":{"papermill":{"duration":0.007135,"end_time":"2025-03-01T12:16:49.665637","exception":false,"start_time":"2025-03-01T12:16:49.658502","status":"completed"},"tags":[]}},{"id":"6ff6894e","cell_type":"markdown","source":"### Import Libraries","metadata":{"papermill":{"duration":0.007028,"end_time":"2025-03-01T12:16:49.679740","exception":false,"start_time":"2025-03-01T12:16:49.672712","status":"completed"},"tags":[]}},{"id":"d5f7cf2a","cell_type":"code","source":"import torch\nimport torch.nn as nn","metadata":{"execution":{"iopub.execute_input":"2025-03-01T12:16:49.695367Z","iopub.status.busy":"2025-03-01T12:16:49.694849Z","iopub.status.idle":"2025-03-01T12:16:49.700093Z","shell.execute_reply":"2025-03-01T12:16:49.698669Z"},"papermill":{"duration":0.015168,"end_time":"2025-03-01T12:16:49.702187","exception":false,"start_time":"2025-03-01T12:16:49.687019","status":"completed"},"tags":[]},"outputs":[],"execution_count":null},{"id":"45f1aeaf","cell_type":"markdown","source":"### Create Model","metadata":{"papermill":{"duration":0.006869,"end_time":"2025-03-01T12:16:49.717552","exception":false,"start_time":"2025-03-01T12:16:49.710683","status":"completed"},"tags":[]}},{"id":"37dff9eb","cell_type":"code","source":"class ANNModel(nn.Module):\n    def __init__(self, input_dim, hidden_dim, output_dim):\n        super(ANNModel,self).__init__()\n\n        # Linear func 1\n        self.fc1 = nn.Linear(input_dim,hidden_dim)\n        # Non-linearity 1\n        self.relu1 = nn.ReLU()\n\n        # Linear func2\n        self.fc2 = nn.Linear(hidden_dim, hidden_dim)\n        self.tanh2 = nn.Tanh()\n\n        self.fc3 = nn.Linear(hidden_dim, hidden_dim)\n        self.elu3 = nn.ELU()\n\n        self.fc4 = nn.Linear(hidden_dim, output_dim)\n\n    def forward(self,x):\n        out = self.fc1(x)\n        out = self.relu1(out)\n\n\n        out = self.fc2(out)\n        out = self.tanh2(out)\n\n        out = self.fc3(out)\n        out = self.elu3(out)\n\n        out = self.fc4(out)\n        return out\n\n\ninput_dim = 28*28\nhidden_dim = 150\noutput_dim = 10\n\nmodel = ANNModel(input_dim,hidden_dim,output_dim)\nerror = nn.CrossEntropyLoss()\n\n# SGD Optimizer\nlearning_rate = 0.02\noptimizer = torch.optim.SGD(model.parameters(),lr=learning_rate)","metadata":{"execution":{"iopub.execute_input":"2025-03-01T12:16:49.733851Z","iopub.status.busy":"2025-03-01T12:16:49.733436Z","iopub.status.idle":"2025-03-01T12:16:49.744991Z","shell.execute_reply":"2025-03-01T12:16:49.743608Z"},"papermill":{"duration":0.022309,"end_time":"2025-03-01T12:16:49.747101","exception":false,"start_time":"2025-03-01T12:16:49.724792","status":"completed"},"tags":[]},"outputs":[],"execution_count":null},{"id":"20d18f03","cell_type":"markdown","source":"### ANN Model Training","metadata":{"papermill":{"duration":0.006614,"end_time":"2025-03-01T12:16:49.761091","exception":false,"start_time":"2025-03-01T12:16:49.754477","status":"completed"},"tags":[]}},{"id":"81ee3001","cell_type":"code","source":"count = 0\nloss_list = []\niteration_list = []\naccuracy_list = []\nfor epoch in range(num_epochs):\n    for i, (images,labels) in enumerate(train_loader):\n        train = images.view(-1,28*28).float()\n        labels = labels\n\n        # Clear Gradients\n        optimizer.zero_grad()\n\n        # forward\n        outputs = model(train)\n\n        # calculate softmax and cross entropy loss\n        loss = error(outputs,labels)\n\n        # backward: calculating gradients \n        loss.backward()\n\n        # Update parameters\n        optimizer.step()\n\n        count +=1\n\n        if count % 50 == 0:\n            # Calculate acc\n            correct = 0\n            total = 0\n            \n            # Predict test dataset\n            for images,labels in test_loader:\n                test = images.view(-1,28*28).float()\n                \n                # forward propagation\n                outputs = model(test)\n                predicted = torch.max(outputs.data, 1)[1]\n\n                total += len(labels)\n                \n                correct += (predicted == labels).sum()\n\n            accuracy = 100 * correct / float(total)\n            \n            # store loss and iteration\n            loss_list.append(loss.data)\n            iteration_list.append(count)\n            accuracy_list.append(accuracy)\n        if count % 500 == 0:\n            # Print Loss\n            print('Iteration: {}  Loss: {}  Accuracy: {} %'.format(count, loss.data, accuracy))\n       ","metadata":{"execution":{"iopub.execute_input":"2025-03-01T12:16:49.777975Z","iopub.status.busy":"2025-03-01T12:16:49.777560Z","iopub.status.idle":"2025-03-01T12:18:10.329474Z","shell.execute_reply":"2025-03-01T12:18:10.328394Z"},"papermill":{"duration":80.562316,"end_time":"2025-03-01T12:18:10.331477","exception":false,"start_time":"2025-03-01T12:16:49.769161","status":"completed"},"tags":[]},"outputs":[],"execution_count":null},{"id":"4c940a13","cell_type":"code","source":"# visualization loss \nplt.plot(iteration_list,loss_list)\nplt.xlabel(\"Number of iteration\")\nplt.ylabel(\"Loss\")\nplt.title(\"ANN: Loss vs Number of iteration\")\nplt.show()\n\n# visualization accuracy \nplt.plot(iteration_list,accuracy_list,color = \"red\")\nplt.xlabel(\"Number of iteration\")\nplt.ylabel(\"Accuracy\")\nplt.title(\"ANN: Accuracy vs Number of iteration\")\nplt.show()","metadata":{"execution":{"iopub.execute_input":"2025-03-01T12:18:10.349209Z","iopub.status.busy":"2025-03-01T12:18:10.348770Z","iopub.status.idle":"2025-03-01T12:18:10.744352Z","shell.execute_reply":"2025-03-01T12:18:10.743038Z"},"papermill":{"duration":0.406742,"end_time":"2025-03-01T12:18:10.746464","exception":false,"start_time":"2025-03-01T12:18:10.339722","status":"completed"},"tags":[]},"outputs":[],"execution_count":null},{"id":"a5c151a3","cell_type":"markdown","source":"## Convolutional Neural Network (CNN)\n\nEvrişimli Sinir Ağı (CNN - Convolutional Neural Network), genellikle görüntü işleme, video analiz, doğal dil işleme ve diğer makine öğrenimi görevlerinde kullanılan bir derin öğrenme modelidir. CNN'ler, görüntülerdeki özellikleri keşfetmek için evrişim (convolution) işlemleri kullanır ve geleneksel yapay sinir ağlarına kıyasla çok daha etkilidir.","metadata":{"papermill":{"duration":0.009261,"end_time":"2025-03-01T12:18:10.765276","exception":false,"start_time":"2025-03-01T12:18:10.756015","status":"completed"},"tags":[]}},{"id":"a32f9f01","cell_type":"markdown","source":"### Import Libraries","metadata":{"papermill":{"duration":0.009456,"end_time":"2025-03-01T12:18:10.784842","exception":false,"start_time":"2025-03-01T12:18:10.775386","status":"completed"},"tags":[]}},{"id":"496225b9","cell_type":"code","source":"import torch\nimport torch.nn as nn","metadata":{"execution":{"iopub.execute_input":"2025-03-01T12:18:10.807201Z","iopub.status.busy":"2025-03-01T12:18:10.806773Z","iopub.status.idle":"2025-03-01T12:18:10.811341Z","shell.execute_reply":"2025-03-01T12:18:10.810105Z"},"papermill":{"duration":0.017478,"end_time":"2025-03-01T12:18:10.813275","exception":false,"start_time":"2025-03-01T12:18:10.795797","status":"completed"},"tags":[]},"outputs":[],"execution_count":null},{"id":"4a6ab530","cell_type":"markdown","source":"### Create CNN Model","metadata":{"papermill":{"duration":0.009484,"end_time":"2025-03-01T12:18:10.832380","exception":false,"start_time":"2025-03-01T12:18:10.822896","status":"completed"},"tags":[]}},{"id":"b2e6b5b1","cell_type":"code","source":"class CNNModel(nn.Module):\n    def __init__(self):\n        super(CNNModel, self).__init__()\n\n        # Convolution 1               (1)\n        self.cnn1 = nn.Conv2d(in_channels=1, out_channels=16, kernel_size=5, stride=1, padding=0)\n        self.relu1 = nn.ReLU()\n        # max pool 1\n        self.maxpool1 = nn.MaxPool2d(kernel_size=2)\n\n        # Convolution 2               (2)\n        self.cnn2 = nn.Conv2d(in_channels=16, out_channels=32, kernel_size=5, stride=1, padding=0)\n        self.relu2 = nn.ReLU()\n        # max pool 2\n        self.maxpool2 = nn.MaxPool2d(kernel_size=2)\n\n        # Fully Connected 1           (3)\n        self.fc1 = nn.Linear(32*4*4, 10)\n\n    def forward(self,x):\n        # Convolution 1\n        out = self.cnn1(x)\n        out = self.relu1(out)\n        # max pool 1\n        out = self.maxpool1(out)\n\n        # Convolution 2\n        out = self.cnn2(out)\n        out = self.relu2(out)\n        # max pool 1\n        out = self.maxpool2(out)\n\n        # flatten\n        out = out.view(out.size(0),-1)\n\n        # Linear func\n        out = self.fc1(out)\n\n        return out\n\n\n# batch size, epoch, iteration\nbatch_size = 100\nn_iters = 2500\nnum_epochs = n_iters / (len(features_train) / batch_size)\nnum_epochs = int(num_epochs)\n\n# Pytorch train and test sets\ntrain = torch.utils.data.TensorDataset(featuresTrain, targetsTrain)\ntest = torch.utils.data.TensorDataset(featuresTest, targetsTest)\n\n# Data Loader\ntrain_loader = torch.utils.data.DataLoader(train, batch_size=batch_size, shuffle=False)\ntest_loader = torch.utils.data.DataLoader(test, batch_size=batch_size, shuffle=False)\n\n# Create CNN\nmodel = CNNModel()\n\n# Cross Entropy Loss\nerror = nn.CrossEntropyLoss()\n\n# SGD Optimizer\nlearning_rate = 0.1\noptimizer = torch.optim.SGD(model.parameters(), lr=learning_rate)","metadata":{"execution":{"iopub.execute_input":"2025-03-01T12:18:10.854200Z","iopub.status.busy":"2025-03-01T12:18:10.853750Z","iopub.status.idle":"2025-03-01T12:18:10.867407Z","shell.execute_reply":"2025-03-01T12:18:10.866076Z"},"papermill":{"duration":0.027404,"end_time":"2025-03-01T12:18:10.869524","exception":false,"start_time":"2025-03-01T12:18:10.842120","status":"completed"},"tags":[]},"outputs":[],"execution_count":null},{"id":"1e6a3163","cell_type":"markdown","source":"### CNN Model Training","metadata":{"papermill":{"duration":0.010704,"end_time":"2025-03-01T12:18:10.890657","exception":false,"start_time":"2025-03-01T12:18:10.879953","status":"completed"},"tags":[]}},{"id":"d6890b87","cell_type":"code","source":"count = 0\nloss_list = []\niterations_list = []\naccuracy_list = []\n\nfor epoch in range(num_epochs):\n    for i,(images,labels) in enumerate(train_loader):\n        train = (images.view(100,1,28,28)).float()\n        labels  = labels\n\n        # Create gradients\n        optimizer.zero_grad()\n\n        # Forward Propagation\n        outputs = model(train)\n\n        # Calculate softmax and ross entropy loss\n        loss = error(outputs, labels)\n        \n        # Calculating gradients\n        loss.backward()\n\n        # Update parameters\n        optimizer.step()\n\n        count += 1\n\n        if count % 50 == 0:\n            # Calculate Accuracy\n            correct = 0\n            total = 0\n            # Iterate through test dateset\n            for images, labels in test_loader:\n                test = (images.view(100,1,28,28)).float()\n\n                # Forward propagation\n                outputs = model(test)\n\n                # Get predictions from the max value\n                predicted = torch.max(outputs.data, 1)[1]\n\n                # Total number of labels\n                total += len(labels)\n\n                correct += (predicted == labels).sum()\n\n            accuracy = 100*correct / float(total)\n            \n            # store loss and iteration\n            loss_list.append(loss.data)\n            iteration_list.append(count)\n            accuracy_list.append(accuracy)\n        if count % 500 == 0:\n            # Print Loss\n            print('Iteration: {}  Loss: {}  Accuracy: {} %'.format(count, loss.data, accuracy))\n\n    ","metadata":{"execution":{"iopub.execute_input":"2025-03-01T12:18:10.912617Z","iopub.status.busy":"2025-03-01T12:18:10.912151Z","iopub.status.idle":"2025-03-01T12:19:43.366475Z","shell.execute_reply":"2025-03-01T12:19:43.365364Z"},"papermill":{"duration":92.466826,"end_time":"2025-03-01T12:19:43.368512","exception":false,"start_time":"2025-03-01T12:18:10.901686","status":"completed"},"tags":[]},"outputs":[],"execution_count":null},{"id":"05c6123f","cell_type":"markdown","source":"### Visualization","metadata":{"papermill":{"duration":0.009258,"end_time":"2025-03-01T12:19:43.387757","exception":false,"start_time":"2025-03-01T12:19:43.378499","status":"completed"},"tags":[]}},{"id":"0c39c470","cell_type":"code","source":"print(f\"iteration_list length: {len(iteration_list)}\")\nprint(f\"loss_list length: {len(loss_list)}\")\nprint(f\"accuracy_list length: {len(accuracy_list)}\")","metadata":{"execution":{"iopub.execute_input":"2025-03-01T12:19:43.408574Z","iopub.status.busy":"2025-03-01T12:19:43.408076Z","iopub.status.idle":"2025-03-01T12:19:43.414542Z","shell.execute_reply":"2025-03-01T12:19:43.413364Z"},"papermill":{"duration":0.018655,"end_time":"2025-03-01T12:19:43.416314","exception":false,"start_time":"2025-03-01T12:19:43.397659","status":"completed"},"tags":[]},"outputs":[],"execution_count":null},{"id":"6b3a3aae","cell_type":"code","source":"min_length = min(len(iteration_list), len(loss_list))\niteration_list = iteration_list[:min_length]\nloss_list = loss_list[:min_length]","metadata":{"execution":{"iopub.execute_input":"2025-03-01T12:19:43.437240Z","iopub.status.busy":"2025-03-01T12:19:43.436799Z","iopub.status.idle":"2025-03-01T12:19:43.441635Z","shell.execute_reply":"2025-03-01T12:19:43.440291Z"},"papermill":{"duration":0.017454,"end_time":"2025-03-01T12:19:43.443539","exception":false,"start_time":"2025-03-01T12:19:43.426085","status":"completed"},"tags":[]},"outputs":[],"execution_count":null},{"id":"8827cfb3","cell_type":"code","source":"# visualization loss \nplt.plot(iteration_list,loss_list)\nplt.xlabel(\"Number of iteration\")\nplt.ylabel(\"Loss\")\nplt.title(\"CNN: Loss vs Number of iteration\")\nplt.show()\n\n# visualization accuracy \nplt.plot(iteration_list,accuracy_list,color = \"red\")\nplt.xlabel(\"Number of iteration\")\nplt.ylabel(\"Accuracy\")\nplt.title(\"CNN: Accuracy vs Number of iteration\")\nplt.show()","metadata":{"execution":{"iopub.execute_input":"2025-03-01T12:19:43.464538Z","iopub.status.busy":"2025-03-01T12:19:43.463936Z","iopub.status.idle":"2025-03-01T12:19:43.868946Z","shell.execute_reply":"2025-03-01T12:19:43.867794Z"},"papermill":{"duration":0.417412,"end_time":"2025-03-01T12:19:43.870804","exception":false,"start_time":"2025-03-01T12:19:43.453392","status":"completed"},"tags":[]},"outputs":[],"execution_count":null}]}