import numpy as np import pandas as pd import os import cv2 import matplotlib.pyplot as plt import seaborn as sns import tensorflow as tf import keras from tqdm import tqdm from tensorflow.keras.layers import Dense, Flatten ,Dropout, Conv2D, MaxPool2D, BatchNormalization,Input from tensorflow.keras.models import Sequential from keras.callbacks import EarlyStopping,ModelCheckpoint from sklearn.metrics import confusion_matrix , accuracy_score from sklearn.metrics import classification_report from sklearn.model_selection import train_test_split from sklearn.preprocessing import LabelEncoder from keras.applications.vgg16 import VGG16,preprocess_input, decode_predictions from keras.preprocessing import image import glob import pandas as pd import matplotlib.pyplot as plotter import warnings from tensorflow.keras import Model warnings.filterwarnings('ignore') train_data_dir = "animals10/raw-img" batch_size = 32 target_size = (224,224) validation_split = 0.2 train= tf.keras.preprocessing.image_dataset_from_directory( train_data_dir, validation_split=validation_split, subset="training", seed=100, image_size=target_size, batch_size=batch_size, ) validation= tf.keras.preprocessing.image_dataset_from_directory( train_data_dir, validation_split=validation_split, subset="validation", seed=200, image_size=target_size, batch_size=batch_size, ) vgg16 = VGG16(weights='imagenet', input_shape=(224,224,3), classes=10,include_top=False) for layer in vgg16.layers: layer.trainable = False x = Flatten()(vgg16.output) x = Dense(256, activation='relu')(x) x = Dropout(0.5)(x) predictions = Dense(10, activation='softmax')(x) vgg16_model = Model(inputs=vgg16.input, outputs=predictions) # vgg16_model.summary() vgg16_model.compile(optimizer ='Adam',loss='sparse_categorical_crossentropy', metrics=['accuracy']) checkpoint =ModelCheckpoint("VGG16_model.h5", save_best_only=True) early_stopping =EarlyStopping(patience=5, restore_best_weights=True) VGG16=vgg16_model.fit_generator(train,epochs=30,validation_data=validation,callbacks=[checkpoint,early_stopping]) score, acc = vgg16_model.evaluate(validation) print('Test Loss =', score) print('Test Accuracy =', acc)