Advertisement
Guest User

Untitled

a guest
Nov 21st, 2017
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.23 KB | None | 0 0
  1. # from flask import Flask
  2. # from keras.preprocessing.image import ImageDataGenerator
  3. import numpy
  4. import os
  5. import scipy
  6. from PIL import Image
  7. import matplotlib.pyplot as plt
  8. import matplotlib.image as mpimg
  9. from keras.datasets import mnist
  10. from keras.models import Sequential
  11. from keras.layers import Dense
  12. from keras.utils import np_utils
  13. img_size = 66, 36
  14.  
  15. def rgb2gray(rgb):
  16.     return numpy.dot(rgb[...,:3], [0.299, 0.587, 0.114])
  17.  
  18. def load_image( infilename ) :
  19.     img = Image.open( infilename )
  20.     img.load()
  21.     data = numpy.asarray( img, dtype="int32" )
  22.     return data
  23.  
  24. def loadDataFromFile(file_path):
  25.     data = numpy.empty([0,66,36])
  26.     img = mpimg.imread(file_path)
  27.     gray_data = numpy.array([rgb2gray(img)])
  28.     numpy.append(data, numpy.array(gray_data),axis = 0)
  29.     data = numpy.append(data, numpy.array(gray_data),axis = 0)
  30.     return data
  31.  
  32. def loadTrainData(dir_path):
  33.     x_data = numpy.empty([0,66,36])
  34.     y_data = numpy.array([])
  35.  
  36.     for folder in os.scandir(dir_path):
  37.         if folder.is_dir():
  38.             subdir_name = folder.name
  39.             for img_file in os.scandir(folder.path):
  40.                 img = mpimg.imread(img_file.path)
  41.                 resized = scipy.misc.imresize(img,img_size)
  42.                 gray_data = numpy.array([rgb2gray(resized)])
  43.                 x_data = numpy.append(x_data, numpy.array(gray_data),axis = 0)
  44.                 y_data = numpy.append(y_data, numpy.array([int(subdir_name)]))
  45.  
  46.     return x_data, y_data
  47.  
  48. numpy.random.seed(42)
  49.  
  50. img_width, img_height = 36, 66
  51. train_data_dir = 'C:\\Users\\Daniil\\Documents\\Visual Studio 2017\\Projects\\PythonApplication3\\data\\train'
  52. test_data_dir = 'C:\\Users\\Daniil\\Documents\\Visual Studio 2017\\Projects\\PythonApplication3\\data\\test'
  53. epochs = 40
  54. batch_size = 16
  55.  
  56. (X_train, y_train) = loadTrainData(train_data_dir)
  57. (X_test, y_test) = loadTrainData(test_data_dir)
  58. X_train = X_train.reshape(X_train.shape[0], 2376)
  59. X_test = X_test.reshape(X_test.shape[0], 2376)
  60. X_train = X_train.astype('float32')
  61. X_test = X_test.astype('float32')
  62. X_train /= 255
  63. X_test /= 255
  64. y_test = np_utils.to_categorical(y_test, 10)
  65. y_train = np_utils.to_categorical(y_train, 10)
  66.  
  67.  
  68. model = Sequential()
  69. # Добавляем уровни сети
  70. # Входной слой: 800 нейронов, у каждого 784 входа, веса инициализируются случайно по нормальному распределению,
  71. # функция активации ReLU
  72. model.add(Dense(800, input_dim=2376, kernel_initializer="normal", activation="relu"))
  73. #model.add(Dense(600, activation="relu", kernel_initializer="normal"))
  74. # Выходной слой: 10 нейронов, веса инициализируются случайно по нормальному распределению, функция активации SoftMax
  75. model.add(Dense(10, activation="softmax", kernel_initializer="normal"))
  76.  
  77. model.compile(loss="categorical_crossentropy", optimizer="SGD", metrics=["accuracy"])
  78.  
  79. model.fit(X_train, y_train, batch_size=batch_size, epochs=epochs, verbose=1)
  80.  
  81. scores = model.evaluate(X_test, y_test, verbose=1)
  82.  
  83. print("Точность работы на тестовых данных: %.2f%%" % (scores[1]*100))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement