{"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":"raw","source":"# 解压7z文件所用的方式\n!pip install py7zr\n","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2023-11-09T11:55:03.056782Z","iopub.execute_input":"2023-11-09T11:55:03.057152Z","iopub.status.idle":"2023-11-09T11:55:19.490898Z","shell.execute_reply.started":"2023-11-09T11:55:03.05712Z","shell.execute_reply":"2023-11-09T11:55:19.489678Z"}}},{"cell_type":"markdown","source":"下载py7zr文件，花了数个小时时间，最终终于找打解决方法，将kaggle的Internet设置打开，得以运行。","metadata":{}},{"cell_type":"code","source":"import py7zr\nimport numpy as np\nimport pandas as pd\nimport itertools\nfrom py7zr import unpack_7zarchive\nimport shutil\n\nfrom fastai.vision.all import *\n\n","metadata":{"execution":{"iopub.status.busy":"2023-11-10T07:09:27.778478Z","iopub.execute_input":"2023-11-10T07:09:27.778826Z","iopub.status.idle":"2023-11-10T07:09:27.807217Z","shell.execute_reply.started":"2023-11-10T07:09:27.778801Z","shell.execute_reply":"2023-11-10T07:09:27.805416Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"导入各种模块：","metadata":{}},{"cell_type":"markdown","source":"","metadata":{}},{"cell_type":"code","source":"shutil.register_unpack_format('7zip',['.7z'],unpack_7zarchive)\nshutil.unpack_archive('../input/cifar-10/train.7z', '/kaggle/temp/')","metadata":{"execution":{"iopub.status.busy":"2023-11-10T07:09:27.807814Z","iopub.status.idle":"2023-11-10T07:09:27.808133Z","shell.execute_reply.started":"2023-11-10T07:09:27.807964Z","shell.execute_reply":"2023-11-10T07:09:27.80799Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_labels = pd.read_csv(\"../input/cifar-10/trainLabels.csv\", header=\"infer\")\nclasses = train_labels['label'].unique()\nprint(classes)","metadata":{"execution":{"iopub.status.busy":"2023-11-10T07:09:27.809358Z","iopub.status.idle":"2023-11-10T07:09:27.809695Z","shell.execute_reply.started":"2023-11-10T07:09:27.80953Z","shell.execute_reply":"2023-11-10T07:09:27.80955Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"if not os.path.exists(\"/kaggle/temp/valid\"):\n    os.mkdir(\"/kaggle/temp/valid\")\n    \nparent_path_train = \"/kaggle/temp/train\"\nparent_path_valid = \"/kaggle/temp/valid\"\n# parent_path_test = \"/kaggle/temp/test\"\n\nfor class1 in classes:\n    path_train = os.path.join(parent_path_train,class1)\n    if not os.path.exists(path_train):\n        os.mkdir(path_train)\n    path_valid = os.path.join(parent_path_valid,class1)\n    if not os.path.exists(path_valid):\n        os.mkdir(path_valid)\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    p=np.random.random()\n    if p<=0.8:\n        target_path = os.path.join(parent_path_train,row[\"label\"],id)\n        os.replace(source_path, target_path)\n    else:\n        target_path = os.path.join(parent_path_valid,row[\"label\"],id)\n        os.replace(source_path, target_path)","metadata":{"execution":{"iopub.status.busy":"2023-11-10T07:09:27.810575Z","iopub.status.idle":"2023-11-10T07:09:27.810873Z","shell.execute_reply.started":"2023-11-10T07:09:27.810722Z","shell.execute_reply":"2023-11-10T07:09:27.810736Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"batch_tfms = [*aug_transforms(), Normalize.from_stats(*imagenet_stats)]\ndls=ImageDataLoaders.from_folder(path='/kaggle/temp',train='train', valid='valid',item_tfms=Resize(224), batch_tfms=batch_tfms,bs=64)\nlearn = vision_learner(dls, resnet50, metrics=accuracy, wd=0.01)","metadata":{"execution":{"iopub.status.busy":"2023-11-10T07:09:27.812131Z","iopub.status.idle":"2023-11-10T07:09:27.812485Z","shell.execute_reply.started":"2023-11-10T07:09:27.812298Z","shell.execute_reply":"2023-11-10T07:09:27.812314Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"learn.lr_find()","metadata":{"execution":{"iopub.status.busy":"2023-11-10T07:09:27.813782Z","iopub.status.idle":"2023-11-10T07:09:27.814124Z","shell.execute_reply.started":"2023-11-10T07:09:27.813949Z","shell.execute_reply":"2023-11-10T07:09:27.813965Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#learn.fit_one_cycle(3, 3e-3)\nlearn.fit_one_cycle(5, 3e-3)","metadata":{"execution":{"iopub.status.busy":"2023-11-10T07:09:27.816073Z","iopub.status.idle":"2023-11-10T07:09:27.816405Z","shell.execute_reply.started":"2023-11-10T07:09:27.816239Z","shell.execute_reply":"2023-11-10T07:09:27.816256Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"learn.unfreeze()\nlearn.lr_find()","metadata":{"execution":{"iopub.status.busy":"2023-11-10T07:09:27.818159Z","iopub.status.idle":"2023-11-10T07:09:27.818501Z","shell.execute_reply.started":"2023-11-10T07:09:27.818316Z","shell.execute_reply":"2023-11-10T07:09:27.818331Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#learn.fit_one_cycle(5, lr_max=slice(1e-6,3e-4))\nlearn.fit_one_cycle(10, lr_max=slice(1e-6,3e-4))","metadata":{"execution":{"iopub.status.busy":"2023-11-10T07:09:27.819926Z","iopub.status.idle":"2023-11-10T07:09:27.82026Z","shell.execute_reply.started":"2023-11-10T07:09:27.820098Z","shell.execute_reply":"2023-11-10T07:09:27.820114Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"shutil.unpack_archive('/kaggle/input/cifar-10/test.7z','/kaggle/temp/test')\nshutil.unregister_unpack_format('7zip')","metadata":{"execution":{"iopub.status.busy":"2023-11-10T07:09:27.909119Z","iopub.execute_input":"2023-11-10T07:09:27.909402Z","iopub.status.idle":"2023-11-10T07:09:27.93476Z","shell.execute_reply.started":"2023-11-10T07:09:27.909378Z","shell.execute_reply":"2023-11-10T07:09:27.933086Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"path='/kaggle/temp/test/test'\nf=os.listdir(path)\nnew=[str(path)+'/'+s for s in f]\ntest_dl=learn.dls.test_dl(new)\nclass_score,y=learn.get_preds(dl=test_dl)","metadata":{"execution":{"iopub.status.busy":"2023-11-10T07:09:27.935357Z","iopub.status.idle":"2023-11-10T07:09:27.935752Z","shell.execute_reply.started":"2023-11-10T07:09:27.935545Z","shell.execute_reply":"2023-11-10T07:09:27.935561Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"class_score = np.argmax(class_score, axis=1)\nclassScore=class_score.tolist()\nlen(classScore)\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'))\n\nind=0\nfor i in (classScore):\n    predicted_classes[ind]=classes[i]\n    ind=ind+1","metadata":{"execution":{"iopub.status.busy":"2023-11-10T07:09:27.936978Z","iopub.status.idle":"2023-11-10T07:09:27.937357Z","shell.execute_reply.started":"2023-11-10T07:09:27.937185Z","shell.execute_reply":"2023-11-10T07:09:27.937203Z"},"trusted":true},"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)]\nsubmission  = pd.DataFrame({\n    \"id\": ImageId,\n    \"label\": predicted_classes\n})\n\nsubmission.to_csv(\"submission1.csv\", index=False)","metadata":{"execution":{"iopub.status.busy":"2023-11-10T07:09:27.939676Z","iopub.status.idle":"2023-11-10T07:09:27.939986Z","shell.execute_reply.started":"2023-11-10T07:09:27.939831Z","shell.execute_reply":"2023-11-10T07:09:27.939846Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"learn.save('/kaggle/working/vision')","metadata":{"execution":{"iopub.status.busy":"2023-11-10T07:09:27.941415Z","iopub.status.idle":"2023-11-10T07:09:27.94179Z","shell.execute_reply.started":"2023-11-10T07:09:27.941618Z","shell.execute_reply":"2023-11-10T07:09:27.941635Z"},"trusted":true},"execution_count":null,"outputs":[]}]}