From c1ee8cb5a205c5cfa797a81c5db9340f41d61e04 Mon Sep 17 00:00:00 2001 From: Pedro Afonso Date: Sat, 24 Jun 2017 17:01:09 +0100 Subject: [PATCH] =?UTF-8?q?Converte=20a=20base=20de=20c=C3=B3digo=20para?= =?UTF-8?q?=20python=203x?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Alterações efetuadas: - Correção de imports; - Adição de alguns docstrings em alguns módulos; (Pylint) -Outras correções sugeridas pelo Pylint; -Adição de uma matriz de visualização no Test para evidenciar melhor a nivel visual o número ou caractér encontrado; --- src/main.py | 2 +- src/nn/__init__.py | 15 +++++++++------ src/nn/confusion.py | 12 ++++++++---- src/nn/convert.py | 13 ++++++++++--- src/nn/dataset/train.py | 25 +++++++++++++------------ src/nn/test.py | 4 ++-- src/transform/__init__.py | 15 ++++++++++++--- 7 files changed, 55 insertions(+), 31 deletions(-) diff --git a/src/main.py b/src/main.py index 0cbaf6e..c8dec01 100644 --- a/src/main.py +++ b/src/main.py @@ -2,7 +2,7 @@ from transform import Transform print('1 - Train\n2 - Test') -x = int(raw_input('Option:')) +x = int(input('Option:')) if x is 1: NeuralNetwork() diff --git a/src/nn/__init__.py b/src/nn/__init__.py index 2da07c3..fa56075 100644 --- a/src/nn/__init__.py +++ b/src/nn/__init__.py @@ -1,11 +1,11 @@ +'''base da classe neuralnetwork''' import tensorflow as tf import numpy as np import time # -from dataset.train import * -import convert -import neural -import test +from .dataset.train import * +from . import neural +from . import test class NeuralNetwork: def __init__(self): @@ -15,14 +15,17 @@ def __init__(self): print('desfrdgthygju', len(data_input)) - [to_train, to_test, res_to_train, res_to_test] = convert.dataset_matrix_to_lists(data_input, data_output, 75, 30) + [to_train, + to_test, + res_to_train, + res_to_test] = convert.dataset_matrix_to_lists(data_input, data_output, 75, 30) for x in range(0, 1): [epoch, err] = neural.train(to_train, res_to_train) print('epoch:', epoch, 'mse:', err) if err < target: test_success = test_success + 1 - test.test_neural(epoch, to_test, res_to_test); + test.test_neural(epoch, to_test, res_to_test) print('time', time.time() - start) print('success ', test_success) diff --git a/src/nn/confusion.py b/src/nn/confusion.py index 2ba211a..512aebe 100644 --- a/src/nn/confusion.py +++ b/src/nn/confusion.py @@ -1,10 +1,12 @@ +''' ''' import seaborn as sn import pandas as pd import matplotlib.pyplot as plt # -import convert +from . import convert def build_matrix_array(matrix, desired_results, obtained_results): + ''' D ''' for position in range(0, len(desired_results)): # desired = int(convert.convert_binary_to_int(desired_results[position])) @@ -16,9 +18,11 @@ def build_matrix_array(matrix, desired_results, obtained_results): return matrix def confusion_matrix_graphic(array): - df_cm = pd.DataFrame(array, index = [i for i in '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'], - columns = [i for i in '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ']) - plt.figure(figsize = (10,7)) + ''' creates confusion matrix graphic ''' + df_cm = pd.DataFrame(array, + index=[i for i in '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'], + columns=[i for i in '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ']) + plt.figure(figsize=(10, 7)) sn.heatmap(df_cm, annot=True) # Display matrix plt.matshow(array) diff --git a/src/nn/convert.py b/src/nn/convert.py index 4a5ba36..68fdb06 100644 --- a/src/nn/convert.py +++ b/src/nn/convert.py @@ -1,10 +1,17 @@ -import numpy as np +''' # convert the shit ou of here! ''' -# convert the shit ou of here! # only 6bits +import numpy as np + + def convert_binary_to_int(binary_value): - result = binary_value[5] * 1 + binary_value[4] * 2 + binary_value[3] * 4 + binary_value[2] * 8 + binary_value[1] * 16 + binary_value[0] * 32 + result = (binary_value[5] * 1 + + binary_value[4] * 2 + + binary_value[3] * 4 + + binary_value[2] * 8 + + binary_value[1] * 16 + + binary_value[0] * 32) if result < 36 and result > -1: return result diff --git a/src/nn/dataset/train.py b/src/nn/dataset/train.py index dd1a315..8cec0bb 100644 --- a/src/nn/dataset/train.py +++ b/src/nn/dataset/train.py @@ -1,16 +1,17 @@ -from numbers.zero import * -from numbers.one import * -from numbers.two import * -from numbers.three import * -from numbers.four import * -from numbers.five import * -from numbers.six import * -from numbers.seven import * -from numbers.eight import * -from numbers.nine import * +''' Train data into a input and a output ''' +from .numbers.zero import * +from .numbers.one import * +from .numbers.two import * +from .numbers.three import * +from .numbers.four import * +from .numbers.five import * +from .numbers.six import * +from .numbers.seven import * +from .numbers.eight import * +from .numbers.nine import * # -from chars.ca import * -from chars.cb import * +from .chars.ca import * +from .chars.cb import * data_input = [ input_zero, diff --git a/src/nn/test.py b/src/nn/test.py index 2e193c0..0ab5710 100644 --- a/src/nn/test.py +++ b/src/nn/test.py @@ -1,7 +1,7 @@ import tensorflow as tf import numpy as np # -import confusion +from . import confusion meta_graph_src = './nn/tmp/my_test_model.meta' checkpoint_src = './nn/tmp' @@ -21,7 +21,7 @@ def test_neural(epoch, data_input, data_output): with tf.Session() as sess: saver = tf.train.import_meta_graph(meta_graph_src) - saver.restore(sess,tf.train.latest_checkpoint(checkpoint_src)) + saver.restore(sess, tf.train.latest_checkpoint(checkpoint_src)) graph = tf.get_default_graph() w1 = sess.run(graph.get_tensor_by_name("w1:0")) b1 = sess.run(graph.get_tensor_by_name("b1:0")) diff --git a/src/transform/__init__.py b/src/transform/__init__.py index 970b2fe..c97706d 100644 --- a/src/transform/__init__.py +++ b/src/transform/__init__.py @@ -10,21 +10,30 @@ def __init__(self): # make it black and white gray = col.convert('L') - bw = gray.point(lambda x: 0 if x<128 else 255, '1') + bw = gray.point(lambda x: 0 if x < 128 else 255, '1') # get transformed data pixels = list(bw.getdata()) width, height = bw.size # make a matrix - pixels = [pixels[i * width:(i + 1) * width] for i in xrange(height)] + pixels = [pixels[i * width:(i + 1) * width] for i in range(height)] # update values - pixels = [[1. if pixels[i][g] == 0 else 0. for g in xrange(width)] for i in xrange(height)] + pixels = [[1. if pixels[i][g] == 0 else 0. for g in range(width)] for i in range(height)] + pixels2 = [[' ' if pixels[i][g] == 0 else '@' for g in range(width)] for i in range(height)] + + print('Matriz Resultado:') + for h in range(0, len(pixels)): print(pixels[h]) + print('Matriz visual:') + + for h in range(0, len(pixels2)): + print(pixels2[h]) + # test with trained neural network def __del__(self):