Anda di halaman 1dari 4

# -*- coding: utf-8 -*-

"""
Created on Sun Feb 18 14:45:26 2018

@author: Sam
"""
import tensorflow as tf
import numpy as np
import os.path
import skimage.data
from skimage import transform
from skimage import color
import matplotlib.pyplot as plt
import random

class tensorFlow:

def __init__(self):
pass

def load_data(self,data_directory):
directories = [d for d in os.listdir(data_directory)
if os.path.isdir(os.path.join(data_directory,d))]

labels = []
images = []

for d in directories:
label_directory = os.path.join(data_directory,d)

file_names = [os.path.join(label_directory,f)
for f in os.listdir(label_directory)
if f.endswith('.ppm')]

for f in file_names:
images.append(skimage.data.imread(f))
labels.append(int(d))

return images,labels

def editImage(self,images,labels):

images28 = [transform.resize(image,(28,28)) for image in images]


images28 = np.array(images28)
images28 = skimage.color.rgb2gray(images28)

return images28

def Train_NN(self,images28,labels):

x = tf.placeholder(dtype = tf.float32, shape = [None, 28, 28])


y = tf.placeholder(dtype = tf.int32, shape = [None])

images_flat = tf.contrib.layers.flatten(x)

logits = tf.contrib.layers.fully_connected(images_flat,62,tf.nn.relu)

loss = tf.reduce_mean(tf.nn.sparse_softmax_cross_entropy_with_logits(labels
=
y,
logits =

logits))
#ADAM optimizer
train_op = tf.AdamOptimizer(learning_rate = .001).minimize(loss)

#convert logits to labels


correct_pred = tf.argmax(logits,1)

#accuracy
accuracy = tf.reduce_mean(tf.cast(correct_pred,tf.float32))

tf.set_random_seed(1234)
sess = tf.Session()

sess.run(tf.global_variable_initializer())

for i in range(201):
print('EPOCH: ',i)
_,accuracy_value =
sess.run([train_op,accuracy],feed_dict={x:images28,y:labels})
if i % 10 == 0:
print('LOSS: ',loss)

print('Done With Epoch')

def Test_NN(self):
pass

def seeImage(self,images):
view = [300,2250,3333,1111]#image number

for i in range(len(view)):
plt.subplot(1,4, i+1)
plt.axis('off')
plt.imshow(images[view[i]])
plt.show()

#%%

#test = tensorFlow()
#
#ROOT_PATH = "C:/Users/Sam/Documents/Python Scripts"
#train_data_directory = os.path.join(ROOT_PATH,'BelgiumTSC_Training/Training')
#test_data_directory = os.path.join(ROOT_PATH,'BelgiumTSC_Testing/Testing')
#images,labels = test.load_data(train_data_directory)
#

#image28 = [transform.resize(image,(28,28)) for image in images]


images28 = np.array(image28)
images28 = color.rgb2gray(images28)

x = tf.placeholder(dtype = tf.float32, shape = [None, 28,28])


y = tf.placeholder(dtype = tf.int32, shape = [None])

images_flat = tf.contrib.layers.flatten(x)
logits = tf.contrib.layers.fully_connected(images_flat, 62, tf.nn.relu)
loss = tf.reduce_mean(tf.nn.sparse_softmax_cross_entropy_with_logits(labels = y,
logits =
logits))
train_op = tf.train.AdamOptimizer(learning_rate = 0.001).minimize(loss)

correct_pred = tf.argmax(logits,1)
accuracy = tf.reduce_mean(tf.cast(correct_pred,tf.float32))

tf.set_random_seed(1234)
sess = tf.Session()

sess.run(tf.global_variables_initializer())

for i in range(201):
print('EPOCH', i)
_, accuracy_val = sess.run([train_op, accuracy], feed_dict={x: images28, y:
labels})
if i % 10 == 0:
print("Loss: ", loss)
print('DONE WITH EPOCH')

sample_index = random.sample(range(len(images28)),10)
sample_images = [images28[i] for i in sample_index]
sample_lables = [labels[i] for i in sample_index]
predicted = sess.run([correct_pred], feed_dict = {x:sample_images})[0]

print(sample_lables)
print(predicted)

Anda mungkin juga menyukai