# -*- coding: utf-8 -*-
"""
Created on Tue Mar 20 16:06:20 2018

@author: ML
"""

from keras.models import Sequential
from keras.layers import Convolution2D
from keras.layers import MaxPooling2D
from keras.layers import Flatten
from keras.layers import Dense

#Initializing CNN
classifier = Sequential()

#Convolution layer1
classifier.add(Convolution2D(32,3,3,input_shape=(64,64,3),activation='relu'))

#Pooling
classifier.add(MaxPooling2D(pool_size=(2,2)))

#Convolution layer2
classifier.add(MaxPooling2D(pool_size=(2,2)))

#Flattening
classifier.add(Flatten())

#Hidden Layer
classifier.add(Dense(output_dim=128,activation='relu'))
#Output layer
classifier.add(Dense(output_dim=1,activation='sigmoid'))

#Compiling CNN
classifier.compile(optimizer='adam',loss='binary_crossentropy',metrics=['accuracy'])

#Fitting
from keras.preprocessing.image import ImageDataGenerator
train_datagen = ImageDataGenerator(
        rescale=1./255,
        shear_range=0.2,
        zoom_range=0.2,
        horizontal_flip=True)

test_datagen = ImageDataGenerator(rescale=1./255)

training_set = train_datagen.flow_from_directory( 'dataset/training_set',
                                                target_size=(64, 64),
                                                batch_size=32,
                                                class_mode='binary')

test_set = test_datagen.flow_from_directory(  'dataset/test_set',
                                               target_size=(64, 64),
                                               batch_size=32,
                                               class_mode='binary')

classifier.fit_generator(
        training_set,
        steps_per_epoch=1200,
        epochs=50,
        validation_data=test_set,
        validation_steps=156)

#New predictions
import numpy as np
from keras.preprocessing import image
test_image = image.load_img('cam.jpg',target_size=(64,64))
test_image = image.img_to_array(test_image)
test_image = np.expand_dims(test_image,axis=0)
result = classifier.predict(test_image)
training_set.class_indices

if result[0][0] == 1:
    pred = 'hritik'
else:
    pred = 'atique'    