
import numpy as np

# Importing the Keras libraries and packages
import tensorflow as tf
from tensorflow.keras import layers, models

if __name__ == "__main__":
 # Initialising the CNN
 # (Sequential- Building the model layer by layer)
 _snake_case      = models.Sequential()

 # Step 1 - Convolution
 # Here 64,64 is the length & breadth of dataset images and 3 is for the RGB channel
 # (3,3) is the kernel size (filter matrix)
 classifier.add(
     layers.ConvaD(32, (3, 3), input_shape=(64, 64, 3), activation='''relu''')
 )

 # Step 2 - Pooling
 classifier.add(layers.MaxPoolingaD(pool_size=(2, 2)))

 # Adding a second convolutional layer
 classifier.add(layers.ConvaD(32, (3, 3), activation='''relu'''))
 classifier.add(layers.MaxPoolingaD(pool_size=(2, 2)))

 # Step 3 - Flattening
 classifier.add(layers.Flatten())

 # Step 4 - Full connection
 classifier.add(layers.Dense(units=128, activation='''relu'''))
 classifier.add(layers.Dense(units=1, activation='''sigmoid'''))

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

 # Part 2 - Fitting the CNN to the images

 # Load Trained model weights

 # from keras.models import load_model
 # regressor=load_model('cnn.h5')

 _snake_case      = tf.keras.preprocessing.image.ImageDataGenerator(
     rescale=1.0 / 255, shear_range=0.2, zoom_range=0.2, horizontal_flip=True
 )

 _snake_case      = tf.keras.preprocessing.image.ImageDataGenerator(rescale=1.0 / 255)

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

 _snake_case      = 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=5, epochs=30, validation_data=test_set
 )

 classifier.save('''cnn.h5''')

 # Part 3 - Making new predictions

 _snake_case      = tf.keras.preprocessing.image.load_img(
     '''dataset/single_prediction/image.png''', target_size=(64, 64)
 )
 _snake_case      = tf.keras.preprocessing.image.img_to_array(test_image)
 _snake_case      = np.expand_dims(test_image, axis=0)
 _snake_case      = classifier.predict(test_image)
 # training_set.class_indices
 if result[0][0] == 0:
  _snake_case      = '''Normal'''
 if result[0][0] == 1:
  _snake_case      = '''Abnormality detected'''





"""simple docstring"""
def 					a__						(						)	-> Union[str, Any]:
      UpperCAmelCase__			:							Dict							=    []
      UpperCAmelCase__			:							Tuple							=    1

      while len(lowerCAmelCase    ) < 1E6:
            constant.append(str(lowerCAmelCase    )    )
            i += 1

      UpperCAmelCase__			:							Any							=    """""".join(lowerCAmelCase    )

      return (
          int(constant[0]    )
          * int(constant[9]    )
          * int(constant[99]    )
          * int(constant[9_99]    )
          * int(constant[99_99]    )
          * int(constant[9_99_99]    )
          * int(constant[99_99_99]    )
      )


if __name__ == "__main__":
    print(solution())

