Advertisement
Guest User

Untitled

a guest
Mar 1st, 2020
520
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.05 KB | None | 0 0
  1. from __future__ import absolute_import, division, print_function, unicode_literals
  2. import tensorflow as tf
  3. from tensorflow.keras.models import Sequential
  4. from tensorflow.keras.layers import Dense, Conv2D, Flatten, Dropout, MaxPooling2D
  5. from tensorflow.keras.preprocessing.image import ImageDataGenerator
  6.  
  7. import os
  8. import numpy as np
  9. import matplotlib.pyplot as plt
  10.  
  11. train_dir = os.path.join("./", 'TrainingDataSmall')
  12. validation_dir = os.path.join("./", 'ValidationData')
  13.  
  14. #for x in range(360):
  15. #    os.mkdir("./TrainingData" + str(x))
  16.  
  17. total_train = 0
  18. total_val = 0
  19.  
  20. for x in range(1,10):
  21.     numDirectory = os.path.join(train_dir, str(x))
  22.     numInDirectory = len(os.listdir(numDirectory))
  23.     total_train = total_train + numInDirectory
  24.  
  25. for x in range(1,10):
  26.     numDirectory = os.path.join(validation_dir, str(x))
  27.     numInDirectory = len(os.listdir(numDirectory))
  28.     total_val = total_val + numInDirectory
  29.  
  30. print("Total training " + str(total_train))
  31. print("Total validation " + str(total_val))
  32.  
  33. batch_size = 16
  34. epochs = 15
  35. IMG_HEIGHT = 115
  36. IMG_WIDTH = 115
  37.  
  38. train_image_generator = ImageDataGenerator() # Generator for our training data
  39. validation_image_generator = ImageDataGenerator() # Generator for our validation data
  40. train_data_gen = train_image_generator.flow_from_directory(batch_size=batch_size,
  41.                                                            directory=train_dir,
  42.                                                            shuffle=True,
  43.                                                            target_size=(IMG_HEIGHT, IMG_WIDTH),
  44.                                                            class_mode='binary')
  45.                                                            
  46. val_data_gen = validation_image_generator.flow_from_directory(batch_size=batch_size,
  47.                                                               directory=validation_dir,
  48.                                                               target_size=(IMG_HEIGHT, IMG_WIDTH),
  49.                                                               class_mode='binary')
  50.  
  51. sample_training_images, _ = next(train_data_gen)
  52. # This function will plot images in the form of a grid with 1 row and 5 columns where images are placed in each column.
  53. def plotImages(images_arr):
  54.     fig, axes = plt.subplots(1, 5, figsize=(20,20))
  55.     axes = axes.flatten()
  56.     for img, ax in zip( images_arr, axes):
  57.         ax.imshow(img)
  58.         ax.axis('off')
  59.     plt.tight_layout()
  60.     plt.show()
  61.  
  62. #plotImages(sample_training_images[:5])
  63.  
  64.  
  65. #saver = tf.compat.v1.train.Saver
  66.  
  67. #with tf.compat.v1.Session() as session:
  68.     #saver.save(session, "FuncaptchaModel.ckpt")
  69. model = Sequential([
  70.     Conv2D(16, 3, padding='same', activation='relu', input_shape=(IMG_HEIGHT, IMG_WIDTH ,3)),
  71.     MaxPooling2D(),
  72.     Conv2D(32, 3, padding='same', activation='relu'),
  73.     MaxPooling2D(),
  74.     Conv2D(64, 3, padding='same', activation='relu'),
  75.     MaxPooling2D(),
  76.     Flatten(),
  77.     Dense(512, activation='relu'),
  78.     Dense(1, activation='sigmoid')
  79. ])
  80. model.compile(optimizer='adam',
  81.               loss='binary_crossentropy',
  82.               metrics=['accuracy'])
  83. model.summary()
  84.  
  85. history = model.fit_generator(
  86.     train_data_gen,
  87.     steps_per_epoch=total_train,
  88.     epochs=epochs,
  89.     validation_data=val_data_gen,
  90.     validation_steps=total_val
  91. )
  92.  
  93.  
  94.  
  95. acc = history.history['accuracy']
  96. val_acc = history.history['val_accuracy']
  97.  
  98. loss = history.history['loss']
  99. val_loss = history.history['val_loss']
  100.  
  101. epochs_range = range(epochs)
  102.  
  103. plt.figure(figsize=(8, 8))
  104. plt.subplot(1, 2, 1)
  105. plt.plot(epochs_range, acc, label='Training Accuracy')
  106. plt.plot(epochs_range, val_acc, label='Validation Accuracy')
  107. plt.legend(loc='lower right')
  108. plt.title('Training and Validation Accuracy')
  109.  
  110. plt.subplot(1, 2, 2)
  111. plt.plot(epochs_range, loss, label='Training Loss')
  112. plt.plot(epochs_range, val_loss, label='Validation Loss')
  113. plt.legend(loc='upper right')
  114. plt.title('Training and Validation Loss')
  115. plt.show()
  116.  
  117.  
  118. #validation_image_generator = ImageDataGenerator(rescale=1./255) # Generator for our validation data
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement