Skip to content

Instantly share code, notes, and snippets.

@kwakseonghun
Last active August 10, 2017 05:41
Show Gist options
  • Save kwakseonghun/70220bbb5bf0ada8d4073d3a4036f79e to your computer and use it in GitHub Desktop.
Save kwakseonghun/70220bbb5bf0ada8d4073d3a4036f79e to your computer and use it in GitHub Desktop.
import tensorflow as tf
import numpy as np
def MinMaxScaler(data):
numerator = data - np.min(data, 0)
denominator = np.max(data, 0) - np.min(data, 0)
# noise term prevents the zero division
return numerator / (denominator + 1e-7)
data_dim=50
output_dim=3
xy1=np.loadtxt('train-01-data.csv',delimiter=',')
xy2=np.loadtxt('train-02-data.csv',delimiter=',')
xy3=np.loadtxt('train-03-data.csv',delimiter=',')
xy4=np.loadtxt('test-data.csv',delimiter=',')
x1=xy1[:,0:50]
y1=xy1[:,50:53]
x2=xy2[:,0:50]
y2=xy2[:,50:53]
x3=xy3[:,0:50]
y3=xy3[:,50:53]
x4=xy4[:,0:50]
y4=xy4[:,50:53]
x1=MinMaxScaler(x1)
x2=MinMaxScaler(x2)
x3=MinMaxScaler(x3)
x4=MinMaxScaler(x4)
trainX1=x1
trainY1=y1
trainX2=x2
trainY2=y2
trainX3=x3
trainY3=y3
testX=x4
testY=y4
X=tf.placeholder(tf.float32,[None,data_dim])
Y=tf.placeholder(tf.float32,[None,3])
W1=tf.Variable(tf.random_normal([50,25]))
W2=tf.Variable(tf.random_normal([25,10]))
W3=tf.Variable(tf.random_normal([10,3]))
b1=tf.Variable(tf.zeros([25]), name="Bias1")
b2=tf.Variable(tf.zeros([10]), name="Bias2")
b3=tf.Variable(tf.zeros([3]), name="Bias3")
with tf.name_scope("layer1") as scope:
L1=tf.nn.sigmoid(tf.matmul(X,W1)+b1)
with tf.name_scope("layer2") as scope:
L2=tf.nn.sigmoid(tf.matmul(L1,W2)+b2)
with tf.name_scope("last") as scope:
Y_pred=tf.nn.softmax(tf.matmul(L2,W3)+b3)
loss=-tf.reduce_mean(Y*tf.log(Y_pred))
accuracy=tf.reduce_mean(tf.cast(tf.equal(tf.arg_max(Y_pred,1),tf.arg_max(Y,1)),dtype=tf.float32))
optimizer=tf.train.AdamOptimizer(0.001)
train=optimizer.minimize(loss)
sess=tf.Session()
sess.run(tf.global_variables_initializer())
for i in range(10000):
_,l=sess.run([train,loss],feed_dict={X:trainX1,Y:trainY1})
_,l=sess.run([train,loss],feed_dict={X:trainX2,Y:trainY2})
_,l=sess.run([train,loss],feed_dict={X:trainX3,Y:trainY3})
if i%200==0:
print(i,l)
testPredict=sess.run(Y_pred,feed_dict={X:testX})
acc=sess.run(accuracy,feed_dict={X:testX,Y:testY})
print("\n정확도: ", acc)
print(np.argmax(testPredict,1))
print(np.argmax(testY,1))
#sql 사용부분
#import sqlite3
#import pandas as pd
#from pandas import Series,DataFrame
#con=sqlite3.connect("c:/Users/skehrha/tensor.db")
#cursor=con.cursor()
#W_1=DataFrame(sess.run(W1))
#W_2=DataFrame(sess.run(W2))
#W_3=DataFrame(sess.run(W3))
#b_1=DataFrame(sess.run(b1))
#b_2=DataFrame(sess.run(b2))
#b_3=DataFrame(sess.run(b3))
#testPredict_=DataFrame(np.argmax(testPredict,1))
#W_1.to_sql('W11',con)
#W_2.to_sql('W22',con)
#W_3.to_sql('W33',con)
#b_1.to_sql('b11',con)
#b_2.to_sql('b22',con)
#b_3.to_sql('b33',con)
#testPredict_.to_sql('예측값',con)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment