{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"import numpy as np # linear algebra\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\nimport os\nfor dirname, _, filenames in os.walk('/kaggle/input'):\n    for filename in filenames:\n        print(os.path.join(dirname, filename))","metadata":{"_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","papermill":{"duration":0.7147,"end_time":"2023-10-04T12:31:06.259241","exception":false,"start_time":"2023-10-04T12:31:05.544541","status":"completed"},"tags":[]},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from fastai.vision.all import *","metadata":{"papermill":{"duration":6.2282,"end_time":"2023-10-04T12:31:12.493801","exception":false,"start_time":"2023-10-04T12:31:06.265601","status":"completed"},"tags":[]},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"!pip install py7zr","metadata":{"papermill":{"duration":11.227062,"end_time":"2023-10-04T12:31:23.727394","exception":false,"start_time":"2023-10-04T12:31:12.500332","status":"completed"},"tags":[]},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import py7zr\n\narchive_path = '../input/cifar-10/train.7z'\nextract_folder = '/kaggle/temp/'\n\nwith py7zr.SevenZipFile(archive_path, mode='r') as archive:\n    archive.extractall(path=extract_folder)\n\ntrain_labels = pd.read_csv(\"../input/cifar-10/trainLabels.csv\", header=\"infer\")","metadata":{"papermill":{"duration":43.03323,"end_time":"2023-10-04T12:32:06.767991","exception":false,"start_time":"2023-10-04T12:31:23.734761","status":"completed"},"tags":[]},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"parent_path_train = \"/kaggle/temp/train\"\nparent_path_valid = \"/kaggle/temp/valid\"\n\nclasses = ['airplane', 'automobile', 'bird', 'cat', 'deer', 'dog', 'frog', 'horse', 'ship', 'truck']\n\nfor class1 in classes:\n    path_train = os.path.join(parent_path_train, class1)\n    os.makedirs(path_train, exist_ok=True)  # This will create directories if they don't exist\n    \n    path_valid = os.path.join(parent_path_valid, class1)\n    os.makedirs(path_valid, exist_ok=True)  # This will create directories if they don't exist\n\nfor (int_ind, row) in train_labels.iterrows():\n    id = str(row[\"id\"]) + \".png\"\n    source_path = os.path.join(parent_path_train, id)\n    \n    if not os.path.exists(source_path):\n        print(f\"Missing source file: {source_path}\")\n        continue\n    \n    p = np.random.random()\n    if p <= 0.8:\n        target_path = os.path.join(parent_path_train, row[\"label\"], id)\n    else:\n        target_path = os.path.join(parent_path_valid, row[\"label\"], id)\n    \n    os.replace(source_path, target_path)\n\nprint(\"Processing completed!\")\n","metadata":{"papermill":{"duration":5.564706,"end_time":"2023-10-04T12:32:12.362166","exception":false,"start_time":"2023-10-04T12:32:06.797460","status":"completed"},"tags":[]},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"classes = train_labels['label'].unique()\nparent_path_train = \"/kaggle/temp/train\"\nparent_path_valid = \"/kaggle/temp/valid\"\ndls=ImageDataLoaders.from_folder(path='/kaggle/temp',\n                            train='train', valid='valid',item_tfms=Resize(224),bs=64)","metadata":{"papermill":{"duration":0.021762,"end_time":"2023-10-04T12:32:12.391420","exception":false,"start_time":"2023-10-04T12:32:12.369658","status":"completed"},"tags":[]},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"os.listdir('/kaggle/temp')","metadata":{"papermill":{"duration":0.01666,"end_time":"2023-10-04T12:32:18.929511","exception":false,"start_time":"2023-10-04T12:32:18.912851","status":"completed"},"tags":[]},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"learn = cnn_learner(dls, resnet152, metrics=accuracy)\nlearn.lr_find()\nlearn.fit_one_cycle(5, lr_max=slice(1e-4, 1e-3))\n\nlearn.unfreeze()\nlearn.fit_one_cycle(10, lr_max=slice(1e-6, 1e-4))\n\ndls = ImageDataLoaders.from_folder(path='/kaggle/temp',\n                                   train='train', valid='valid', item_tfms=Resize(224), bs=64,\n                                   batch_tfms=[*aug_transforms(), Normalize.from_stats(*imagenet_stats)])\nlearn = cnn_learner(dls, resnet152, metrics=accuracy).to_fp16()\n\nlearn.lr_find()\nlearn.fit_one_cycle(5, lr_max=slice(1e-4, 1e-3))\n\nlearn.unfreeze()\nlearn.fit_one_cycle(10, lr_max=slice(1e-6, 1e-4))","metadata":{"papermill":{"duration":1.238435,"end_time":"2023-10-04T12:32:21.334347","exception":false,"start_time":"2023-10-04T12:32:20.095912","status":"completed"},"tags":[]},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"archive_path = '/kaggle/input/cifar-10/test.7z'\nextract_folder = '/kaggle/temp/test/'\n\nwith py7zr.SevenZipFile(archive_path, mode='r') as archive:\n    archive.extractall(path=extract_folder)\n","metadata":{"papermill":{"duration":807.408042,"end_time":"2023-10-04T13:13:59.951965","exception":false,"start_time":"2023-10-04T13:00:32.543923","status":"completed"},"tags":[]},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"learn.save('/kaggle/working/vision')","metadata":{"papermill":{"duration":0.577804,"end_time":"2023-10-04T13:14:00.545200","exception":false,"start_time":"2023-10-04T13:13:59.967396","status":"completed"},"tags":[]},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"len(os.listdir('/kaggle/temp/test/test'))\npath='/kaggle/temp/test/test'\nf=os.listdir(path)\nnew=[str(path)+'/'+s for s in f]","metadata":{"papermill":{"duration":0.467545,"end_time":"2023-10-04T13:14:01.027736","exception":false,"start_time":"2023-10-04T13:14:00.560191","status":"completed"},"tags":[]},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test_dl=learn.dls.test_dl(new)\nclass_score,y=learn.get_preds(dl=test_dl)\nclass_score = np.argmax(class_score, axis=1)\n\nclass_score[1].item()\nclassScore=class_score.tolist()\nlearn.dls.vocab\nclasses={0:'airplane',1:'automobile',2:'bird',3:'cat',4:'deer',5:'dog',6:'frog',7:'horse',8:'ship',9:'truck'}\npredicted_classes=np.empty(shape=300000,dtype=np.dtype('U20'))","metadata":{"papermill":{"duration":0.03792,"end_time":"2023-10-04T13:14:01.362963","exception":false,"start_time":"2023-10-04T13:14:01.325043","status":"completed"},"tags":[]},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"ind=0\nfor i in (classScore):\n    predicted_classes[ind]=classes[i]\n    ind=ind+1","metadata":{"papermill":{"duration":0.125334,"end_time":"2023-10-04T13:24:27.611430","exception":false,"start_time":"2023-10-04T13:24:27.486096","status":"completed"},"tags":[]},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"directory = '/kaggle/temp/test/test'\nImageId = [ (''.join(filter(str.isdigit, name ))) for name in os.listdir(directory)]","metadata":{"papermill":{"duration":0.361419,"end_time":"2023-10-04T13:24:28.029649","exception":false,"start_time":"2023-10-04T13:24:27.668230","status":"completed"},"tags":[]},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"submission  = pd.DataFrame({\n    \"id\": ImageId,\n    \"label\": predicted_classes\n})\nsubmission.to_csv(\"submission.csv\", index=False)\ndisplay(submission.head(3))\ndisplay(submission.tail(3))\nsubmission['id']=submission['id'].astype(int)\nsubmission.to_csv('submission.csv', index=False)","metadata":{"papermill":{"duration":0.423689,"end_time":"2023-10-04T13:24:28.469290","exception":false,"start_time":"2023-10-04T13:24:28.045601","status":"completed"},"tags":[]},"execution_count":null,"outputs":[]}]}