from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense, Dropout
from tensorflow.keras.preproccessing.image import ImageDataGenerator
img_width, img_height = 128, 128
img_amount = 30
train_data = ImageDataGenerator(
rescale = 1.0/255,
rotation_range = 20,
width_shift_range = 0.2,
heigth_shift_range = 0.2,
zoom_range = 0.2,
horizontal_flip = True
)
path_training_data = 'dataset/train'
training_genrator = train_datagen.flow_from_directory(
path_training_data,
target_size=(img_width, img_height),
batch_size=img_amount,
class_mode='binary'
)
model = Sequential([
Conv2D(32, (3, 3), activation='relu', input_shape=(img_width, img_height, 3)),
MaxPooling2D(pool_size=(2, 2)),
Conv2D(64, (3, 3), activation='relu'),
MaxPooling2D(pool_size=(2, 2)),
Conv2D(128, (3, 3), activation='relu'),
MaxPooling2D(pool_size=(2, 2)),
Flatten(),
Dense(512, activation='relu'),
Dropout(0.5),
Dense(1, activation='sigmoid')
])
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
epochs = 10
model.fit(training_genrator, epochs=epochs)
model.save('cat_and_dog.h5')