{"cells":[{"metadata":{"trusted":true,"_uuid":"d66983bb9d5252e809c58f995d0481043eb80cab"},"cell_type":"code","source":"import numpy as np\nimport os\nimport re\nimport cv2\nimport h5py\nfrom random import shuffle\nfrom tqdm import tqdm\nimport keras\nfrom keras.callbacks import TensorBoard\nimport tensorflow as tf","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"ae77b49f47177ba2364eda00d8d6daae78f0f0b9"},"cell_type":"code","source":"print(cv2.__version__)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"2ceca8f406af726474cc8d82e8888cbe27e12844"},"cell_type":"code","source":"#print(os.listdir(\"C:/Users/User/Desktop/all/train\"))\ntrain_dir = \"../input/train/train/\"\ntest_dir = \"../input/test1/test1/\"\nIMG_SIZE = 32\nLR = 1e-3\n\nMODEL_NAME = 'dc-{}-{}.model'.format(LR, '2conv-basic')\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"708805ac3a2d4eaf2ea8d97a3b097280bb01bd96"},"cell_type":"code","source":"img_width = 32\nimg_height = 32\ninput_shape = (img_width, img_height, 1)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"1e7c5f7e632db852ab2312c0ea8a93f07618f537"},"cell_type":"code","source":"def labled(name):\n    if \"cat\" == name.split(\".\")[0]:return[0, 1]\n    elif \"dog\" == name.split(\".\")[0]:return[1, 0]","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"ab09e18e8966f59e0e0ce4d306e3d00b02a98cca"},"cell_type":"code","source":"def trains():\n    training_data = []\n    for img in tqdm(os.listdir(train_dir)):\n        label = labled(img)\n        path = os.path.join(train_dir,img)\n        img = cv2.imread(path,cv2.IMREAD_GRAYSCALE)\n        img = cv2.resize(img, (IMG_SIZE,IMG_SIZE))\n        training_data.append([np.array(img),np.array(label)])\n    shuffle(training_data)\n    np.save('train_data.npy', training_data)\n    return training_data","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"c1d346beed86fe10b80779f15d27efd5a4755bdf"},"cell_type":"code","source":"def tests():\n    testing_data = []\n    for img in os.listdir(test_dir):\n        label = labled(img)\n\n        path = os.path.join(test_dir,img)\n        img_num = img.split('.')[0]\n        img = cv2.imread(path,cv2.IMREAD_GRAYSCALE)\n        img = cv2.resize(img, (IMG_SIZE,IMG_SIZE))\n        testing_data.append([np.array(img), img_num])\n        \n    shuffle(testing_data)\n    np.save('test_data.npy', testing_data)\n    return testing_data","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"a22af287f40a943e6933a770182fcd3a7e62627c"},"cell_type":"code","source":"train_data = trains()\ntest_data =tests()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"85a4f0f0e8238115e7611df55c0406a286019537"},"cell_type":"code","source":"from tensorflow.python.client import device_lib\nprint(device_lib.list_local_devices())","execution_count":null,"outputs":[]},{"metadata":{"scrolled":true,"trusted":true,"_uuid":"97487306e118cf0268b21d7b587a5337c726f3ca"},"cell_type":"code","source":"from keras.models import Sequential\nfrom keras.layers import Dense\nfrom keras.layers import Dropout\nfrom keras.layers import Flatten\nfrom keras.constraints import maxnorm\nfrom keras.optimizers import SGD\nfrom keras.layers.convolutional import Conv2D\nfrom keras.layers.convolutional import MaxPooling2D\nfrom keras.utils import np_utils\nfrom keras.layers import Convolution2D, MaxPooling2D","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"b50711c0607f5b013da171491fb87c43ddac359b"},"cell_type":"code","source":"\n\nmodel = Sequential()\nmodel.add(Conv2D(32,(3,3), activation='relu', input_shape=(32,32,1)))\nmodel.add(Conv2D(32,(3,3), activation='relu'))\nmodel.add(Conv2D(32,(3,3), activation='relu'))\nmodel.add(MaxPooling2D(pool_size=(3,3)))\n\nmodel.add(Dropout(0.25))\nmodel.add(Flatten())\nmodel.add(Dense(128, activation='relu'))\nmodel.add(Dropout(0.5))\nmodel.add(Dense(2, activation='softmax'))\n\nmodel.compile(loss='categorical_crossentropy',\n              optimizer='adam',\n              metrics=['accuracy'])","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"4609ba2ee476dfe2c70329453693a0630c439006"},"cell_type":"code","source":"from matplotlib import pyplot as plt","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"0ed480016e1695446b2b5b7f439729cbb2a0b95c"},"cell_type":"code","source":"train = train_data[:-500]\ntest = test_data[:-500]","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"67db060324f8297df40f6beff87abff558e33606"},"cell_type":"code","source":"X = np.array([i[0] for i in train])\nX = X.reshape(X.shape[0],IMG_SIZE,IMG_SIZE,1)\nY = np.array([i[1] for i in train])\nX = X.astype('float32')\nX /= 255\nprint(Y.shape)\nprint(Y)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"e35a663d44a41f3d60eb5a019aebc2ea94147ab8"},"cell_type":"code","source":"\ntest_x = np.array([i[0] for i in test])\ntest_x = test_x.reshape(-1,IMG_SIZE,IMG_SIZE,1)\n# test_x= test_x.reshape(test_x.shape[0],IMG_SIZE,IMG_SIZE,1)\nprint(test_x.shape)\ntest_x = test_x.astype('float32')\ntest_x /= 255\ntest_y = np.array([i[1] for i in test])\ntest_y=test_y.reshape(test_y.shape[0],1)\nprint(test_y.shape,test_x.shape)\n\n","execution_count":null,"outputs":[]},{"metadata":{"scrolled":false,"trusted":true,"_uuid":"79b4f45906a5f341bd18804a02c72865403adff6"},"cell_type":"code","source":"%%time\nimport tensorflow as tf\nfrom keras_tqdm import TQDMNotebookCallback\nwith tf.device(\"/device:GPU:0\"):\n    model.fit(X,Y, batch_size=32, epochs=50, verbose=2, callbacks=[TQDMNotebookCallback()], validation_split=0.2)\n    \n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"2a4e1233fa41968a6a776e4e863d16c589ab6f8b"},"cell_type":"code","source":"%%time\nimport copy\nwith tf.device('/gpu:0'):\n    model.save(filepath = \"my_model3.h5\")","execution_count":null,"outputs":[]},{"metadata":{"scrolled":true,"trusted":true,"_uuid":"7fd4dc2e3cf87286de6fa9b01b1c59714adff376"},"cell_type":"code","source":"results = model.predict_classes(test_x)\nprint(results)\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"4fa1ddc82e95a7b8871c58a54bebc5c181b2ab02"},"cell_type":"code","source":"print(results[1])\nplt.imshow(test_x[1].reshape(32,32))","execution_count":null,"outputs":[]},{"metadata":{"trusted":false,"_uuid":"e5b65ebb6e5f0ccab7c116657815a56ba39097cb"},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{"trusted":false,"_uuid":"933e77f18724b89adea483a4e8ff75ddcffe5df2"},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{"trusted":false,"_uuid":"ca185a4a49ca435937e95d7336b022a542f9044a"},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{"trusted":false,"_uuid":"e63184922a3794ed7898f98804fd3a4885fd33a7"},"cell_type":"code","source":"","execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"name":"python","version":"3.6.6","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"}},"nbformat":4,"nbformat_minor":1}