https://drive.google.com/file/d/1Lqmu00lPyV0Dbkf52jgGI0rlYUCa5SXZ/view?usp=sharing
!pip install tensorflow Pillow
import tensorflow as tf
from tensorflow.keras.preprocessing.image import ImageDataGenerator
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense, Dropout
from tensorflow.keras.preprocessing import image
train_datagen = ImageDataGenerator(rescale=1./255, validation_split=0.2)
train_generator = train_datagen.flow_from_directory(
'dogs_vs_cats/train',
target_size=(150, 150),
batch_size=32,
class_mode='binary',
subset='training'
)
val_generator = train_datagen.flow_from_directory(
'dogs_vs_cats/train',
target_size=(150, 150),
batch_size=32,
class_mode='binary',
subset='validation'
)
model = Sequential([
Conv2D(32, (3,3), activation='relu', input_shape=(150,150,3)),
MaxPooling2D(2,2),
Conv2D(64, (3,3), activation='relu'),
MaxPooling2D(2,2),
Flatten(),
Dense(128, activation='relu'),
Dropout(0.5),
Dense(1, activation='sigmoid') # Binary classification
])
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
model.fit(train_generator, validation_data=val_generator, epochs=10)
model.save("model/cat_dog_model.h5")
from tensorflow.keras.preprocessing import image
import numpy as np
img = image.load_img("/Users/bibekdhakal/Downloads/cat2.jpg", target_size=(150, 150))
img_array = image.img_to_array(img) / 255.0
img_array = np.expand_dims(img_array, axis=0)
pred = model.predict(img_array)
print("Dog" if pred[0][0] > 0.5 else "Cat")