Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # from flask import Flask
- # from keras.preprocessing.image import ImageDataGenerator
- import numpy
- import os
- import scipy
- from PIL import Image
- import matplotlib.pyplot as plt
- import matplotlib.image as mpimg
- from keras.datasets import mnist
- from keras.models import Sequential
- from keras.layers import Dense
- from keras.utils import np_utils
- img_size = 66, 36
- def rgb2gray(rgb):
- return numpy.dot(rgb[...,:3], [0.299, 0.587, 0.114])
- def load_image( infilename ) :
- img = Image.open( infilename )
- img.load()
- data = numpy.asarray( img, dtype="int32" )
- return data
- def loadDataFromFile(file_path):
- data = numpy.empty([0,66,36])
- img = mpimg.imread(file_path)
- gray_data = numpy.array([rgb2gray(img)])
- numpy.append(data, numpy.array(gray_data),axis = 0)
- data = numpy.append(data, numpy.array(gray_data),axis = 0)
- return data
- def loadTrainData(dir_path):
- x_data = numpy.empty([0,66,36])
- y_data = numpy.array([])
- for folder in os.scandir(dir_path):
- if folder.is_dir():
- subdir_name = folder.name
- for img_file in os.scandir(folder.path):
- img = mpimg.imread(img_file.path)
- resized = scipy.misc.imresize(img,img_size)
- gray_data = numpy.array([rgb2gray(resized)])
- x_data = numpy.append(x_data, numpy.array(gray_data),axis = 0)
- y_data = numpy.append(y_data, numpy.array([int(subdir_name)]))
- return x_data, y_data
- numpy.random.seed(42)
- img_width, img_height = 36, 66
- train_data_dir = 'C:\\Users\\Daniil\\Documents\\Visual Studio 2017\\Projects\\PythonApplication3\\data\\train'
- test_data_dir = 'C:\\Users\\Daniil\\Documents\\Visual Studio 2017\\Projects\\PythonApplication3\\data\\test'
- epochs = 40
- batch_size = 16
- (X_train, y_train) = loadTrainData(train_data_dir)
- (X_test, y_test) = loadTrainData(test_data_dir)
- X_train = X_train.reshape(X_train.shape[0], 2376)
- X_test = X_test.reshape(X_test.shape[0], 2376)
- X_train = X_train.astype('float32')
- X_test = X_test.astype('float32')
- X_train /= 255
- X_test /= 255
- y_test = np_utils.to_categorical(y_test, 10)
- y_train = np_utils.to_categorical(y_train, 10)
- model = Sequential()
- # Добавляем уровни сети
- # Входной слой: 800 нейронов, у каждого 784 входа, веса инициализируются случайно по нормальному распределению,
- # функция активации ReLU
- model.add(Dense(800, input_dim=2376, kernel_initializer="normal", activation="relu"))
- #model.add(Dense(600, activation="relu", kernel_initializer="normal"))
- # Выходной слой: 10 нейронов, веса инициализируются случайно по нормальному распределению, функция активации SoftMax
- model.add(Dense(10, activation="softmax", kernel_initializer="normal"))
- model.compile(loss="categorical_crossentropy", optimizer="SGD", metrics=["accuracy"])
- model.fit(X_train, y_train, batch_size=batch_size, epochs=epochs, verbose=1)
- scores = model.evaluate(X_test, y_test, verbose=1)
- print("Точность работы на тестовых данных: %.2f%%" % (scores[1]*100))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement