{"cells":[{"metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true},"cell_type":"code","source":"import os\nos.environ[\"DISABLE_V2_BEHAVIOR\"]=\"1\" ","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","trusted":true},"cell_type":"code","source":"!pip install -q -U pip\n!pip install -q \"tensorflow_gpu>=2.0.0\"  # cpu: pip3 install \"tensorflo\n!pip install -q transformers\n!pip install -q ktrain ","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"!pip install -q git+https://github.com/amaiya/eli5@tfkeras_0_10_1 \n!pip install -q git+https://github.com/amaiya/stellargraph@no_tf_dep_082","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"import ktrain\nimport logging\nfrom ktrain import vision as vis\nimport stellargraph, eli5, tensorflow\neli5.__version__, stellargraph.__version__, ktrain.__version__, tensorflow.__version__","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"tensorflow.get_logger().setLevel(logging.WARNING) # ERROR","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"!cp /kaggle/input/dogs-vs-cats/train.zip train.zip\n!cp /kaggle/input/dogs-vs-cats/test1.zip test1.zip\n!unzip -q test1.zip\n!unzip -q train.zip","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"!mkdir /kaggle/working/dc\n!cp -r train /kaggle/working/dc/\n!mkdir /kaggle/working/dc/valid\n!mv /kaggle/working/dc/train/cat.1*.jpg /kaggle/working/dc/valid/\n!mv /kaggle/working/dc/train/dog.1*.jpg /kaggle/working/dc/valid/\n\n!mkdir /kaggle/working/dc/train/dogs \n!mkdir /kaggle/working/dc/train/cats\n!mkdir /kaggle/working/dc/valid/dogs \n!mkdir /kaggle/working/dc/valid/cats\n!mv /kaggle/working/dc/train/dog.*.jpg /kaggle/working/dc/train/dogs/\n!mv /kaggle/working/dc/train/cat.*.jpg /kaggle/working/dc/train/cats/\n!mv /kaggle/working/dc/valid/dog.*.jpg /kaggle/working/dc/valid/dogs/\n!mv /kaggle/working/dc/valid/cat.*.jpg /kaggle/working/dc/valid/cats/","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"DATADIR = '/kaggle/working/dc'\n(train_data, val_data, preproc) = vis.images_from_folder(\n                                              datadir=DATADIR,\n                                              data_aug = vis.get_data_aug(horizontal_flip=True),\n                                              train_test_names=['train', 'valid'], \n                                              target_size=(224,224), color_mode='rgb')\nmodel = vis.image_classifier('pretrained_resnet50', train_data, val_data, freeze_layers=15)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"learner = ktrain.get_learner(model=model, train_data=train_data, val_data=val_data, \n                             workers=8, use_multiprocessing=False, batch_size=64)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"learner.lr_find(max_epochs=2 , show_plot=True)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"import gc , torch\ngc.collect()\ntorch.cuda.empty_cache()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"learner.fit_onecycle(1e-5, 3)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"loss, acc = learner.model.evaluate_generator(learner.val_data, \n                                             steps=len(learner.val_data))\nprint(f'final loss:{loss}, final accuracy:{acc}')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"learner.view_top_losses(n=3, preproc=preproc)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"predictor = ktrain.get_predictor(learner.model, preproc)\npredictor.predict_filename('/kaggle/working/dc/valid/cats/cat.11724.jpg')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# forked copies seem to fail to install on docker (need pip3)\npredictor.explain('/kaggle/working/dc/valid/cats/cat.11724.jpg')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"#=============== working with eli5 directly (may not work due to pip3 absence?)\nimport keras\nimport numpy as np\ndims = learner.model.input_shape[1:3]\nimage_uri = '/kaggle/working/dc/valid/cats/cat.11724.jpg'\nim = keras.preprocessing.image.load_img(image_uri, target_size=dims)\ndoc = keras.preprocessing.image.img_to_array(im)\n\ndoc = np.expand_dims(doc, axis=0)\nimage = keras.preprocessing.image.array_to_img(doc[0])\nex = eli5.explain_prediction(learner.model, doc)\neli5.show_prediction(model, doc)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"ex.error","execution_count":null,"outputs":[]}],"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":4,"nbformat_minor":4}