{"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":"markdown","source":"# 프로젝트 1. 이미지 다중 분류 : Dog Breed (kaggle)\n## 코드 예시","metadata":{}},{"cell_type":"markdown","source":"### 데이터셋이 있는 경진대회 링크\nhttps://www.kaggle.com/c/dog-breed-identification","metadata":{}},{"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)\n\nimport os\nfor dirname, _, filenames in os.walk('/kaggle/input'):\n    for filename in filenames:\n        print(os.path.join(dirname, filename))\n#여기까지 kaggle 기본","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2022-02-24T03:29:06.857463Z","iopub.execute_input":"2022-02-24T03:29:06.857873Z","iopub.status.idle":"2022-02-24T03:29:13.02031Z","shell.execute_reply.started":"2022-02-24T03:29:06.857831Z","shell.execute_reply":"2022-02-24T03:29:13.019381Z"},"collapsed":true,"jupyter":{"outputs_hidden":true},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### 1. 기본 라이브러리 호출","metadata":{}},{"cell_type":"code","source":"from PIL import Image \n#from numpy import asarray\nfrom keras import layers, models\nfrom keras.models import Sequential\nfrom keras.layers import Dense, Conv2D, MaxPooling2D, LeakyReLU, Flatten, Dropout, Activation, BatchNormalization, GlobalAveragePooling2D \n\nfrom keras import Model, optimizers, initializers, regularizers, metrics\nfrom keras.callbacks import ModelCheckpoint\n\n\nimport matplotlib.pyplot as plt\n#from keras.utils.np_utils import to_categorical\nfrom keras.preprocessing.image import ImageDataGenerator #,array_to_img, img_to_array, load_img\n\nfrom keras import Input","metadata":{"execution":{"iopub.status.busy":"2022-02-24T03:29:13.022721Z","iopub.execute_input":"2022-02-24T03:29:13.023013Z","iopub.status.idle":"2022-02-24T03:29:13.031955Z","shell.execute_reply.started":"2022-02-24T03:29:13.022982Z","shell.execute_reply":"2022-02-24T03:29:13.030812Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### 2. 데이터 load","metadata":{}},{"cell_type":"code","source":"sub=pd.read_csv('/kaggle/input/dog-breed-identification/sample_submission.csv')\nlabels=pd.read_csv('/kaggle/input/dog-breed-identification/labels.csv', dtype=str)","metadata":{"execution":{"iopub.status.busy":"2022-02-24T03:29:13.033308Z","iopub.execute_input":"2022-02-24T03:29:13.03374Z","iopub.status.idle":"2022-02-24T03:29:13.446749Z","shell.execute_reply.started":"2022-02-24T03:29:13.033708Z","shell.execute_reply":"2022-02-24T03:29:13.445806Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#test data용 dataframe 파일 만들기\ntest=pd.DataFrame()","metadata":{"execution":{"iopub.status.busy":"2022-02-24T03:29:13.448057Z","iopub.execute_input":"2022-02-24T03:29:13.448332Z","iopub.status.idle":"2022-02-24T03:29:13.453735Z","shell.execute_reply.started":"2022-02-24T03:29:13.448305Z","shell.execute_reply":"2022-02-24T03:29:13.452635Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test['id']=sub['id']","metadata":{"execution":{"iopub.status.busy":"2022-02-24T03:29:13.457518Z","iopub.execute_input":"2022-02-24T03:29:13.457805Z","iopub.status.idle":"2022-02-24T03:29:13.470863Z","shell.execute_reply.started":"2022-02-24T03:29:13.457777Z","shell.execute_reply":"2022-02-24T03:29:13.469817Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test.dtypes","metadata":{"execution":{"iopub.status.busy":"2022-02-24T03:29:13.473694Z","iopub.execute_input":"2022-02-24T03:29:13.474081Z","iopub.status.idle":"2022-02-24T03:29:13.482902Z","shell.execute_reply.started":"2022-02-24T03:29:13.474047Z","shell.execute_reply":"2022-02-24T03:29:13.481944Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"sub","metadata":{"execution":{"iopub.status.busy":"2022-02-24T03:29:13.484448Z","iopub.execute_input":"2022-02-24T03:29:13.484764Z","iopub.status.idle":"2022-02-24T03:29:13.529613Z","shell.execute_reply.started":"2022-02-24T03:29:13.484735Z","shell.execute_reply":"2022-02-24T03:29:13.528828Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test['id']=test['id']+'.jpg'","metadata":{"execution":{"iopub.status.busy":"2022-02-24T03:29:13.53094Z","iopub.execute_input":"2022-02-24T03:29:13.531203Z","iopub.status.idle":"2022-02-24T03:29:13.537846Z","shell.execute_reply.started":"2022-02-24T03:29:13.531177Z","shell.execute_reply":"2022-02-24T03:29:13.537012Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test","metadata":{"execution":{"iopub.status.busy":"2022-02-24T03:29:13.538994Z","iopub.execute_input":"2022-02-24T03:29:13.53937Z","iopub.status.idle":"2022-02-24T03:29:13.558519Z","shell.execute_reply.started":"2022-02-24T03:29:13.539271Z","shell.execute_reply":"2022-02-24T03:29:13.557514Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"labels","metadata":{"execution":{"iopub.status.busy":"2022-02-24T03:29:13.559854Z","iopub.execute_input":"2022-02-24T03:29:13.56013Z","iopub.status.idle":"2022-02-24T03:29:13.573406Z","shell.execute_reply.started":"2022-02-24T03:29:13.560103Z","shell.execute_reply":"2022-02-24T03:29:13.572701Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"labels['breed'].value_counts() # breed 종류와 각 종류이 개수 확인","metadata":{"execution":{"iopub.status.busy":"2022-02-24T03:29:13.574839Z","iopub.execute_input":"2022-02-24T03:29:13.575244Z","iopub.status.idle":"2022-02-24T03:29:13.58546Z","shell.execute_reply.started":"2022-02-24T03:29:13.575205Z","shell.execute_reply":"2022-02-24T03:29:13.584763Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"labels1=labels.copy()","metadata":{"execution":{"iopub.status.busy":"2022-02-24T03:29:13.58684Z","iopub.execute_input":"2022-02-24T03:29:13.587378Z","iopub.status.idle":"2022-02-24T03:29:13.593827Z","shell.execute_reply.started":"2022-02-24T03:29:13.587292Z","shell.execute_reply":"2022-02-24T03:29:13.593063Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"labels1['id']=labels['id']+'.jpg'","metadata":{"execution":{"iopub.status.busy":"2022-02-24T03:29:13.596394Z","iopub.execute_input":"2022-02-24T03:29:13.5968Z","iopub.status.idle":"2022-02-24T03:29:13.609341Z","shell.execute_reply.started":"2022-02-24T03:29:13.596767Z","shell.execute_reply":"2022-02-24T03:29:13.608313Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"labels1","metadata":{"execution":{"iopub.status.busy":"2022-02-24T03:29:13.610667Z","iopub.execute_input":"2022-02-24T03:29:13.611149Z","iopub.status.idle":"2022-02-24T03:29:13.633425Z","shell.execute_reply.started":"2022-02-24T03:29:13.611109Z","shell.execute_reply":"2022-02-24T03:29:13.632704Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#train 데이터가 있는 폴더와 test 데이터가 있는 폴더 지정\ntrain_dir ='/kaggle/input/dog-breed-identification/train/' \ntest_dir='/kaggle/input/dog-breed-identification/test/'","metadata":{"execution":{"iopub.status.busy":"2022-02-24T03:29:13.634564Z","iopub.execute_input":"2022-02-24T03:29:13.63499Z","iopub.status.idle":"2022-02-24T03:29:13.643869Z","shell.execute_reply.started":"2022-02-24T03:29:13.634958Z","shell.execute_reply":"2022-02-24T03:29:13.643092Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#file 확장자 (jpg)확인\npath_dir = train_dir #train_dir\nfile_list = os.listdir(path_dir)\nnjpg_list=[]\nfor i in file_list:\n    a = i.split(\".\")\n    if a[-1] != \"jpg\":\n        njpg_list.append(i)\nprint(njpg_list)","metadata":{"execution":{"iopub.status.busy":"2022-02-24T03:29:13.645017Z","iopub.execute_input":"2022-02-24T03:29:13.645478Z","iopub.status.idle":"2022-02-24T03:29:13.668748Z","shell.execute_reply.started":"2022-02-24T03:29:13.645373Z","shell.execute_reply":"2022-02-24T03:29:13.667885Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#file 확장자 (jpg)확인\npath_dir = test_dir #train_dir\nfile_list = os.listdir(path_dir)\nnjpg_list=[]\nfor i in file_list:\n    a = i.split(\".\")\n    if a[-1] != \"jpg\":\n        njpg_list.append(i)\nprint(njpg_list)","metadata":{"execution":{"iopub.status.busy":"2022-02-24T03:29:13.670294Z","iopub.execute_input":"2022-02-24T03:29:13.670624Z","iopub.status.idle":"2022-02-24T03:29:13.687924Z","shell.execute_reply.started":"2022-02-24T03:29:13.670593Z","shell.execute_reply":"2022-02-24T03:29:13.686896Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# check image\nim_frame = Image.open(test_dir + '000621fb3cbb32d8935728e48679680e.jpg') \nim_frame2 = Image.open(train_dir + '000bec180eb18c7604dcecc8fe0dba07.jpg')\n\n#np_frame = np.array(im_frame)\nplt.imshow(im_frame)\nplt.show()\nplt.imshow(im_frame2)\nplt.show()","metadata":{"execution":{"iopub.status.busy":"2022-02-24T03:29:13.689581Z","iopub.execute_input":"2022-02-24T03:29:13.690128Z","iopub.status.idle":"2022-02-24T03:29:14.123969Z","shell.execute_reply.started":"2022-02-24T03:29:13.690081Z","shell.execute_reply":"2022-02-24T03:29:14.123124Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# 이미지 사이즈 확인\n# 아래 코드를 주석 해제하여 돌려보고, 결과가 맞는지 검증해본다.\n# im_frame.size, im_frame2.size\n# ((600, 449), (500, 375))","metadata":{"execution":{"iopub.status.busy":"2022-02-24T03:29:14.1253Z","iopub.execute_input":"2022-02-24T03:29:14.125622Z","iopub.status.idle":"2022-02-24T03:29:14.129031Z","shell.execute_reply.started":"2022-02-24T03:29:14.12559Z","shell.execute_reply":"2022-02-24T03:29:14.128247Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# numpy로 변환해서 이미지 사이즈 확인\nnp_frame = np.array(im_frame)\nnp_frame2 = np.array(im_frame2)\nnp_frame.shape, np_frame2.shape\n# ((449, 600, 3), (375, 500, 3))","metadata":{"execution":{"iopub.status.busy":"2022-02-24T03:29:14.13027Z","iopub.execute_input":"2022-02-24T03:29:14.130572Z","iopub.status.idle":"2022-02-24T03:29:14.14428Z","shell.execute_reply.started":"2022-02-24T03:29:14.130544Z","shell.execute_reply":"2022-02-24T03:29:14.143377Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# input size (ImageDataGenerator),input shape (model 설정) 설정\ninput_sh=(224, 224, 3)\ninput_size=(224, 224)","metadata":{"execution":{"iopub.status.busy":"2022-02-24T03:29:14.145764Z","iopub.execute_input":"2022-02-24T03:29:14.146131Z","iopub.status.idle":"2022-02-24T03:29:14.153857Z","shell.execute_reply.started":"2022-02-24T03:29:14.146099Z","shell.execute_reply":"2022-02-24T03:29:14.152745Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"bs=32 #batch size\n\ndatagen = ImageDataGenerator(rescale=1./255, validation_split=0.1) # 10%는 validation data로 사용\n\ntrain0 = datagen.flow_from_dataframe(\n    labels1, directory=train_dir, \n    x_col=labels1.columns[0], y_col=labels1.columns[1], \n    target_size=input_size, \n    subset=\"training\",\n    class_mode=\"categorical\", batch_size=bs) # 90% of raw data\nval0= datagen.flow_from_dataframe(\n    labels1, directory=train_dir, \n    x_col=labels1.columns[0], y_col=labels1.columns[1], \n    target_size=input_size, \n    subset=\"validation\", \n    class_mode=\"categorical\", batch_size=bs) # 10% of raw data\ntest0 = datagen.flow_from_dataframe(\n    test, directory=test_dir, \n    x_col=test.columns[0], y_col=None,  \n    target_size=input_size, \n    shuffle=False, class_mode=None)#, batch_size=bs)","metadata":{"execution":{"iopub.status.busy":"2022-02-24T03:29:14.15517Z","iopub.execute_input":"2022-02-24T03:29:14.15547Z","iopub.status.idle":"2022-02-24T03:29:15.060183Z","shell.execute_reply.started":"2022-02-24T03:29:14.155414Z","shell.execute_reply":"2022-02-24T03:29:15.059159Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# dataset(datagen) 확인\nfor x_batch, y_batch in train0 : #datagen0.flow(test0, batch_size=9):\n        for i in range(0, bs):\n            #plt.subplot(330+1+i)\n            print(x_batch[i].shape, y_batch[i]) # image size, label 출력\n            plt.imshow(((x_batch[i])*255).astype('int')) # image출력\n            plt.show()\n        break","metadata":{"execution":{"iopub.status.busy":"2022-02-24T03:29:15.061797Z","iopub.execute_input":"2022-02-24T03:29:15.062231Z","iopub.status.idle":"2022-02-24T03:29:21.369071Z","shell.execute_reply.started":"2022-02-24T03:29:15.062192Z","shell.execute_reply":"2022-02-24T03:29:21.367929Z"},"collapsed":true,"jupyter":{"outputs_hidden":true},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### 3-A. 모델 설정1: 전이 학습을 사용할 경우","metadata":{}},{"cell_type":"code","source":"# VGG19 사용\nfrom keras.applications import VGG19 #ResNet50V2","metadata":{"execution":{"iopub.status.busy":"2022-02-24T03:29:21.370585Z","iopub.execute_input":"2022-02-24T03:29:21.370965Z","iopub.status.idle":"2022-02-24T03:29:21.376014Z","shell.execute_reply.started":"2022-02-24T03:29:21.370928Z","shell.execute_reply":"2022-02-24T03:29:21.374987Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# base=VGG19(include_top=False, \n#                  weights=\"imagenet\", \n#                  input_shape=input_sh) \n# # ResNet50V2을 사용할 경우\n# base=ResNet50V2(include_top=False, \n#                  weights=\"imagenet\", \n#                  input_shape=input_sh)                \n#                  input_tensor=None,  \n#                  pooling=None, \n#                  classes=1000, \n#                  classifier_activation='sigmoid')\n\n# # 출력 부분 모델 설정\n#x = base.output\n#x = Conv2D(512, (3, 3), activation='relu')(x)\n# x = MaxPooling2D()(x)\n#x = GlobalAveragePooling2D()(x)\n#x= Flatten()(x)\n# x = Dropout(0.5)(x)\n# x = Dense(256, activation='relu')(x)\n#x = Dropout(0.4)(x)\n\n#x=Dense(512, activation='relu')(x)\n#x=Dense(256, activation='relu')(x)\n# x = Dropout(0.5)(x)\n\n# predictions = Dense(120, activation= 'softmax')(x)\n# modelr = Model(inputs = base.input, outputs = predictions)\n# modelr.summary()\n#adam=optimizers.Adam(learning_rate=0.03)\n#adam=Adam(learning_rate=0.01,beta_1=0.9, beta_2=0.999, epsilon=1e-07, amsgrad=False, name='Adam', **kwargs)\n# modelr.compile(optimizer='adam', \n#              loss='categorical_crossentropy', \n#               metrics=['acc'])\n\n# checkpointp = ModelCheckpoint(filepath='modelp4.hdf5', \n#             monitor='val_loss', \n#             mode='min', \n#             save_best_only=True)","metadata":{"execution":{"iopub.status.busy":"2022-02-24T03:29:21.378036Z","iopub.execute_input":"2022-02-24T03:29:21.378512Z","iopub.status.idle":"2022-02-24T03:29:21.386752Z","shell.execute_reply.started":"2022-02-24T03:29:21.378462Z","shell.execute_reply":"2022-02-24T03:29:21.385862Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### 4-A. 학습 진행\n### 5-A  결과 제출","metadata":{}},{"cell_type":"code","source":"# historyr=modelr.fit(train0, epochs=50, validation_data=val0) # 예측\n\n# resultr=modelr.predict(test0)\n\n# # 그래프 확인\n# import matplotlib.pyplot as plt\n# acc=historyr.history['acc']\n# val_acc=historyr.history['val_acc']\n# loss=historyr.history['loss']\n# val_loss=historyr.history['val_loss']\n# epoch=np.arange(1, len(loss)+1)\n# plt.plot(epoch, acc,'r', label='acc')\n# plt.plot(epoch, val_acc,l abel='val_acc')\n# plt.title('Accuracy')\n# plt.savefig('dog_breed_acc.png')\n# plt.legend()\n# plt.plot(epoch, loss, 'r', label='loss')\n# plt.plot(epoch, val_loss, label='val_loss')\n# plt.title('Loss')\n# plt.savefig('dog_breed_loss.png')\n# plt.legend()\n\n# # 결과 제출\n# sub2=sub.copy()\n# sub2.iloc[:, 1:]=resultr\n# sub2.to_csv('dogt.csv', index=False)","metadata":{"execution":{"iopub.status.busy":"2022-02-24T03:29:21.387737Z","iopub.execute_input":"2022-02-24T03:29:21.387987Z","iopub.status.idle":"2022-02-24T03:29:21.403045Z","shell.execute_reply.started":"2022-02-24T03:29:21.387962Z","shell.execute_reply":"2022-02-24T03:29:21.402193Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### 3-B. 모델 설정2: 직접 설정하는 경우","metadata":{}},{"cell_type":"code","source":"model = Sequential()\n\nmodel.add(Conv2D(8, (3, 3), input_shape = input_sh))\n#model.add(BatchNormalization())\nmodel.add(Activation('relu'))\n\nmodel.add(MaxPooling2D(pool_size = (2, 2)))\n\nmodel.add(Conv2D(16, (3, 3)))\n#model.add(BatchNormalization())\nmodel.add(Activation('relu'))\n\nmodel.add(MaxPooling2D(pool_size = (2, 2)))\n\nmodel.add(Conv2D(16, (3, 3)))\n#model.add(BatchNormalization())\nmodel.add(Activation('relu'))\n\nmodel.add(MaxPooling2D(pool_size = (2, 2)))\n\nmodel.add(Conv2D(32, (3, 3)))\n#model.add(BatchNormalization())\nmodel.add(Activation('relu'))\n\nmodel.add(MaxPooling2D(pool_size = (2, 2)))\n\nmodel.add(Conv2D(32, (3, 3)))\n#model.add(BatchNormalization())\nmodel.add(Activation('relu'))\n\nmodel.add(MaxPooling2D(pool_size = (2, 2)))\n\n# model.add(Conv2D(64,(3,3)))\n# #model.add(BatchNormalization())\n# model.add(Activation('relu'))\n\n# model.add(Conv2D(64,(3,3)))\n# #model.add(BatchNormalization())\n# model.add(Activation('relu'))\n\n# model.add(MaxPooling2D(pool_size = (2,2)))\n\n# model.add(Conv2D(128,(3,3)))\n# #model.add(BatchNormalization())\n# model.add(Activation('relu'))\n\n# model.add(MaxPooling2D(pool_size = (2,2)))\n\nmodel.add(Flatten())\n#model.add(GlobalAveragePooling2D())\nmodel.add(Dropout(0.25))\n\n# model.add(Dense(256))\n# model.add(BatchNormalization())\n# model.add(Activation('relu'))\n\n# model.add(Dense(100))\n# model.add(BatchNormalization())\n# model.add(Activation('relu'))\n\n# model.add(Dense(100))\n# model.add(BatchNormalization())\n# model.add(Activation('relu'))\n\n# model.add(Dense(100))\n# model.add(Activation('relu'))\n\nmodel.add(Dropout(0.25))\n\nmodel.add(Dense(256))\nmodel.add(Activation('relu'))\n\n# model.add(Dense(100))\n# model.add(BatchNormalization())\n# model.add(Activation('relu'))\n\nmodel.add(Dense(120))\nmodel.add(Activation('softmax'))\n\nmodel.summary()","metadata":{"execution":{"iopub.status.busy":"2022-02-24T03:29:21.404494Z","iopub.execute_input":"2022-02-24T03:29:21.404973Z","iopub.status.idle":"2022-02-24T03:29:21.541993Z","shell.execute_reply.started":"2022-02-24T03:29:21.404929Z","shell.execute_reply":"2022-02-24T03:29:21.540875Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"checkpointm = ModelCheckpoint(filepath='modelm4.hdf5', \n            monitor='val_loss', \n            mode='min', \n            save_best_only=True)\n\nmodel.compile(optimizer='adam', \n             loss='categorical_crossentropy', \n              metrics=['acc'])","metadata":{"execution":{"iopub.status.busy":"2022-02-24T03:29:21.543652Z","iopub.execute_input":"2022-02-24T03:29:21.543968Z","iopub.status.idle":"2022-02-24T03:29:21.559491Z","shell.execute_reply.started":"2022-02-24T03:29:21.543939Z","shell.execute_reply":"2022-02-24T03:29:21.558696Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### 4-B. 학습 진행","metadata":{}},{"cell_type":"code","source":"hist=model.fit(train0, epochs=50, validation_data=val0)","metadata":{"execution":{"iopub.status.busy":"2022-02-24T03:29:21.560784Z","iopub.execute_input":"2022-02-24T03:29:21.561684Z","iopub.status.idle":"2022-02-24T03:31:58.375396Z","shell.execute_reply.started":"2022-02-24T03:29:21.561647Z","shell.execute_reply":"2022-02-24T03:31:58.374551Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"sub","metadata":{"execution":{"iopub.status.busy":"2022-02-24T03:31:58.376774Z","iopub.execute_input":"2022-02-24T03:31:58.377139Z","iopub.status.idle":"2022-02-24T03:31:58.413115Z","shell.execute_reply.started":"2022-02-24T03:31:58.377107Z","shell.execute_reply":"2022-02-24T03:31:58.412275Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import matplotlib.pyplot as plt\nloss=hist.history['acc']\nval_loss=hist.history['val_loss']\nepoch=np.arange(1, len(loss)+1)\nplt.plot(epoch, loss, 'r', label='acc')\n#plt.plot(epoch, val_loss, label='val_loss')\nplt.savefig('dog_breed1.png')\nplt.legend()","metadata":{"execution":{"iopub.status.busy":"2022-02-24T03:31:58.414557Z","iopub.execute_input":"2022-02-24T03:31:58.414852Z","iopub.status.idle":"2022-02-24T03:31:58.626546Z","shell.execute_reply.started":"2022-02-24T03:31:58.414822Z","shell.execute_reply":"2022-02-24T03:31:58.625552Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"result=model.predict(test0)\nresult","metadata":{"execution":{"iopub.status.busy":"2022-02-24T03:31:58.630873Z","iopub.execute_input":"2022-02-24T03:31:58.631524Z","iopub.status.idle":"2022-02-24T03:34:17.006912Z","shell.execute_reply.started":"2022-02-24T03:31:58.631481Z","shell.execute_reply":"2022-02-24T03:34:17.005953Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### 5-B. 결과 제출","metadata":{}},{"cell_type":"code","source":"sub2=sub.copy()\nsub2.iloc[:, 1:]=result\nsub2.to_csv('dog.csv', index=False) # score 6.7 교재기준","metadata":{"execution":{"iopub.status.busy":"2022-02-24T03:34:17.008798Z","iopub.execute_input":"2022-02-24T03:34:17.009535Z","iopub.status.idle":"2022-02-24T03:34:20.945067Z","shell.execute_reply.started":"2022-02-24T03:34:17.009487Z","shell.execute_reply":"2022-02-24T03:34:20.944088Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# tmp=np.zeros_like(result)\n# for i in range(len(result)):\n#     tmp[i, np.argmax(result[i])]=1\n# tmp","metadata":{"execution":{"iopub.status.busy":"2022-02-24T03:34:20.946169Z","iopub.execute_input":"2022-02-24T03:34:20.946457Z","iopub.status.idle":"2022-02-24T03:34:20.950225Z","shell.execute_reply.started":"2022-02-24T03:34:20.946416Z","shell.execute_reply":"2022-02-24T03:34:20.949509Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# result1=[]\n# for i in range(len(result)):\n#     result1.append(np.argmax(result[i]))\n# rcnt=pd.DataFrame(result1)\n# rcnt[0].value_counts()","metadata":{"execution":{"iopub.status.busy":"2022-02-24T03:34:20.951463Z","iopub.execute_input":"2022-02-24T03:34:20.951887Z","iopub.status.idle":"2022-02-24T03:34:20.961683Z","shell.execute_reply.started":"2022-02-24T03:34:20.95174Z","shell.execute_reply":"2022-02-24T03:34:20.96079Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# result2=pd.DataFrame(tmp)\n# result2","metadata":{"execution":{"iopub.status.busy":"2022-02-24T03:34:20.964353Z","iopub.execute_input":"2022-02-24T03:34:20.964705Z","iopub.status.idle":"2022-02-24T03:34:20.974266Z","shell.execute_reply.started":"2022-02-24T03:34:20.964667Z","shell.execute_reply":"2022-02-24T03:34:20.973524Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# sub1=sub.copy() #pd.concat([sub['id'], result2], axis=1)\n# sub1.iloc[:, 1:] =tmp","metadata":{"execution":{"iopub.status.busy":"2022-02-24T03:34:20.976583Z","iopub.execute_input":"2022-02-24T03:34:20.97702Z","iopub.status.idle":"2022-02-24T03:34:20.98642Z","shell.execute_reply.started":"2022-02-24T03:34:20.976973Z","shell.execute_reply":"2022-02-24T03:34:20.985495Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# sub1.iloc[1, :]","metadata":{"execution":{"iopub.status.busy":"2022-02-24T03:34:20.988041Z","iopub.execute_input":"2022-02-24T03:34:20.988654Z","iopub.status.idle":"2022-02-24T03:34:21.000844Z","shell.execute_reply.started":"2022-02-24T03:34:20.988607Z","shell.execute_reply":"2022-02-24T03:34:20.99975Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#sub1.to_csv('dog1.csv', index=False)","metadata":{"execution":{"iopub.status.busy":"2022-02-24T03:34:21.002257Z","iopub.execute_input":"2022-02-24T03:34:21.002914Z","iopub.status.idle":"2022-02-24T03:34:21.012686Z","shell.execute_reply.started":"2022-02-24T03:34:21.002876Z","shell.execute_reply":"2022-02-24T03:34:21.011679Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}