Advertisement
Guest User

Untitled

a guest
Nov 13th, 2019
150
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.91 KB | None | 0 0
  1. import tensorflow as tf
  2. from sklearn.model_selection import train_test_split
  3. from tensorflow import keras
  4. from tensorflow.keras.layers import Activation, Conv2D, Flatten, Dropout, MaxPooling2D, BatchNormalization, Dense
  5. from tensorflow.keras import optimizers
  6. import numpy as np
  7. import matplotlib.pyplot as plt
  8. import pandas as pd
  9. from tensorflow_core.python.keras.layers.pooling import MaxPool2D
  10.  
  11. import preprocessing as pre
  12.  
  13. print(tf.__version__)
  14.  
  15. train_x = pd.read_pickle('data/train_max_x')
  16. train_y = pd.read_csv("data/train_max_y.csv").Label.values
  17.  
  18. train_x, val_x, train_y, val_y = train_test_split(train_x, train_y, test_size = 0.2, random_state=1, shuffle=True)
  19.  
  20. #x_train = x_train.reshape(x_train.shape[0], x_train.shape[1], x_train.shape[2])
  21.  
  22. print("Pre-processing")
  23. # # Apply image preprocessing
  24. train_x = pre.binarize(train_x, threshold=230)
  25. val_x = pre.binarize(val_x, threshold=230)
  26.  
  27. # print("Getting figure")
  28. # plt.figure(figsize=(10,10))
  29. # for i in range(20):
  30. #     plt.subplot(5,5,i+1)
  31. #     plt.xticks([])
  32. #     plt.yticks([])
  33. #     plt.grid(False)
  34. #     plt.imshow(train_x[i], cmap=plt.cm.binary)
  35. #     plt.xlabel(train_y[i])
  36. # plt.show()
  37.  
  38. print("Input")
  39. # Dimensions of image
  40. input_shape = (128,128,1)
  41. num_classes = 10
  42. train_x = train_x.reshape(train_x.shape[0], train_x.shape[1], train_x.shape[2], 1)
  43. val_x = val_x.reshape(val_x.shape[0], val_x.shape[1], val_x.shape[2], 1)
  44.  
  45. model = keras.Sequential()
  46. model.add(Conv2D(32, kernel_size=(3, 3),activation='relu',kernel_initializer='he_normal',input_shape=input_shape))
  47. model.add(MaxPool2D((2, 2)))
  48. model.add(Dropout(0.20))
  49. model.add(Conv2D(64, (3, 3), activation='relu',padding='same',kernel_initializer='he_normal'))
  50. model.add(MaxPool2D(pool_size=(2, 2)))
  51. model.add(Dropout(0.25))
  52. model.add(Conv2D(128, (3, 3), activation='relu',padding='same',kernel_initializer='he_normal'))
  53. model.add(MaxPool2D(pool_size=(2, 2)))
  54. model.add(Dropout(0.25))
  55. model.add(Conv2D(256, (3, 3), activation='relu',padding='same',kernel_initializer='he_normal'))
  56. model.add(MaxPool2D(pool_size=(2, 2)))
  57. model.add(Dropout(0.25))
  58. model.add(Conv2D(512, (3, 3), activation='relu',padding='same',kernel_initializer='he_normal'))
  59. model.add(MaxPool2D(pool_size=(2, 2)))
  60. model.add(Flatten())
  61. model.add(Dense(512, activation='relu'))
  62. model.add(BatchNormalization())
  63. model.add(Dropout(0.5))
  64. model.add(Dense(num_classes, activation='softmax'))
  65.  
  66. model.compile(optimizer=tf.keras.optimizers.Adam(),
  67.               loss='sparse_categorical_crossentropy',
  68.               metrics=['accuracy'])
  69.  
  70. # model.compile(optimizer=tf.keras.optimizers.SGD(lr=0.02, decay=1e-6, momentum=0.9, nesterov=True),
  71. #               loss='sparse_categorical_crossentropy',
  72. #               metrics=['accuracy'])
  73.  
  74. print("Fitting")
  75. history = model.fit(train_x, train_y, epochs=20, batch_size=128, verbose=2, validation_data=(val_x, val_y))
  76. model.save('models/cnn_model_AlexNet.h5')
  77. print("Saved")
  78.  
  79. print("Evaluating")
  80. train_loss, train_acc = model.evaluate(train_x, train_y, verbose=2)
  81. val_loss, val_acc = model.evaluate(val_x, val_y, verbose=2)
  82.  
  83. print('\nTrain accuracy:', train_acc)
  84. print('\nValidation accuracy:', val_acc)
  85.  
  86. # print("Predicting on test set")
  87. # test_x = pd.read_pickle('test_max_x')
  88. # test_x = test_x.reshape(test_x.shape[0], test_x.shape[1], test_x.shape[2], 1)
  89. # predictions = np.argmax(model.predict(test_x), axis=1)
  90. # df = pd.DataFrame(pd.Series(predictions))
  91. # df.to_csv('data/predict_test_model_AlexNet.csv')
  92.  
  93. print(history.history.keys())
  94. #  "Accuracy"
  95. plt.plot(history.history['acc'])
  96. plt.plot(history.history['val_acc'])
  97. plt.title('model accuracy')
  98. plt.ylabel('accuracy')
  99. plt.xlabel('epoch')
  100. plt.legend(['train', 'validation'], loc='upper left')
  101. plt.show()
  102. # "Loss"
  103. plt.plot(history.history['loss'])
  104. plt.plot(history.history['val_loss'])
  105. plt.title('model loss')
  106. plt.ylabel('loss')
  107. plt.xlabel('epoch')
  108. plt.legend(['train', 'validation'], loc='upper left')
  109. plt.show()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement