{"metadata":{"kernelspec":{"display_name":"Python 3 (ipykernel)","language":"python","name":"python3"},"language_info":{"codemirror_mode":{"name":"ipython","version":3},"file_extension":".py","mimetype":"text/x-python","name":"python","nbconvert_exporter":"python","pygments_lexer":"ipython3","version":"3.7.16"},"kaggle":{"accelerator":"none","dataSources":[{"sourceId":5441,"databundleVersionId":38425,"sourceType":"competition"}],"dockerImageVersionId":30615,"isInternetEnabled":true,"language":"python","sourceType":"notebook","isGpuEnabled":false}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"markdown","source":"# Main Library","metadata":{}},{"cell_type":"code","source":"# Reading Data & Visualization\nimport os\nimport random\nfrom PIL import Image\nimport cv2\nimport numpy as np\nimport matplotlib.pyplot as plt\n\n# Preprocessing & Training Model\nfrom sklearn.utils import shuffle\nfrom sklearn.model_selection import train_test_split\nfrom tensorflow.keras.utils import to_categorical\nfrom keras.utils import np_utils\n\nimport tensorflow as tf\nfrom keras.preprocessing.image import ImageDataGenerator\nimport tensorflow.keras as k\nfrom keras.layers import Dense, Dropout, Conv2D, Activation\n\n# Loading Model\nimport pickle","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Reading Image","metadata":{}},{"cell_type":"code","source":"train_path = r\"D:\\Courses language programming\\6_Deep Learning\\Deep Learning Project\\Folder\\Dogs-Vs-Cats\\VGG16\\train\"\ntest_path = r\"D:\\Courses language programming\\6_Deep Learning\\Deep Learning Project\\Folder\\Dogs-Vs-Cats\\VGG16\\test\"\n\ndata_train = ImageDataGenerator(preprocessing_function=k.applications.mobilenet.preprocess_input).flow_from_directory(directory=train_path, target_size=(224, 224), batch_size=10)\ndata_test = ImageDataGenerator(preprocessing_function=k.applications.mobilenet.preprocess_input).flow_from_directory(directory=test_path, target_size=(224, 224), batch_size=10, shuffle=False)","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"model_mobilenet = tf.keras.applications.mobilenet.MobileNet()","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"model_1 = k.models.Sequential()\nfor layer in model_mobilenet.layers[:-1]:\n    model_1.add(layer)\nfor layers in model_1.layers:\n    layers.trainable = False","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"model_1.add(Dense(2, activation=\"softmax\"))\nmodel_1.compile(optimizer=\"adam\", loss=\"categorical_crossentropy\", metrics=[\"accuracy\"])\nmodel_1.summary()","metadata":{"collapsed":true,"jupyter":{"outputs_hidden":true}},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"history = model_1.fit(data_train, epochs=2, validation_data=(data_test), validation_split=0.2)","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"loss, accuracy = model_1.evaluate(data_test)\n\nprint(f\"The Accuracy Testing Data is ==> {accuracy} %\")\nprint(f\"The loss Testing Data is ==> {loss}\")","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"pickle.dump(model_1, open(\"D:\\Pycharm\\model_pickle\\Dogs&Cats_with_pretraining(mobile_net)_model.bin\", \"wb\"))","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"","metadata":{}},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# ------------------------------------------------------------------------------------------------------\n# ------------------------------------------------------------------------------------------------------\n# ------------------------------------------------------------------------------------------------------\n# ------------------------------------------------------------------------------------------------------","metadata":{}}]}