Linear Regression

``````

In [1]:

%matplotlib inline
import tensorflow as tf
import numpy as np
from matplotlib import pyplot as plt

# Create 100 phony x, y data points in NumPy, y = x * 0.1 + 0.3
x_data = np.random.rand(100).astype("float32")
y_data = x_data * 0.1 + 0.3 + np.random.randn(len(x_data))*0.01

# Try to find values for W and b that compute y_data = W * x_data + b
# (We know that W should be 0.1 and b 0.3, but Tensorflow will
# figure that out for us.)
with tf.device('/gpu:0'):
W = tf.Variable(tf.random_uniform([1],-1.0,1.0))
b = tf.Variable(tf.zeros([1]))
y = tf.mul(W, x_data) + b
# Minimize the mean squared errors.
loss = tf.reduce_mean(tf.square(y-y_data))
train = optimizer.minimize(loss)

# Before starting, initialize the variables. We will 'run' this first
# init = tf.initialize_all_variables()
init = tf.global_variables_initializer ()

# Launch the graph.
sess = tf.Session()
sess.run(init)
# Fit the line.
for step in range(201):
sess.run(train)
if step % 20 == 0:
print(step, sess.run(W), sess.run(b))

``````
``````

0 [ 0.12464377] [ 0.38197017]
20 [ 0.09974997] [ 0.29970267]
40 [ 0.10235503] [ 0.29836023]
60 [ 0.10284578] [ 0.29810733]
80 [ 0.10293824] [ 0.2980597]
100 [ 0.10295565] [ 0.29805073]
120 [ 0.10295893] [ 0.29804903]
140 [ 0.10295957] [ 0.2980487]
160 [ 0.10295963] [ 0.29804868]
180 [ 0.10295963] [ 0.29804868]
200 [ 0.10295963] [ 0.29804868]

``````
``````

In [2]:

import seaborn as sns
plt.scatter(x_data,y_data)
plt.scatter(x_data,sess.run(W)*x_data+sess.run(b),c='r')
plt.title
plt.show()

``````
``````

``````

Logistic Regression

``````

In [14]:

import tensorflow as tf
import numpy as np
import sys,time
X_data = np.linspace(-100, 100, 1000)
X_test = np.linspace(-20, 80, 10)
y_data = np.zeros([X_data.shape[0],4])
y_test = np.zeros([X_test.shape[0],4])
print(X_data.shape, y_data.shape)
print(X_test.shape, y_test.shape)
ind = 0
for x in X_data:
#     if x<0:
#         y_data[ind,0]=1
#     else:
#         y_data[ind,1]=1
if x < -50:
y_data[ind,0]=1
if x >= -50 and x < 0:
y_data[ind,1]=1
if x >= 0  and x < 50:
y_data[ind,2]=1
if x >= 50:
y_data[ind,3]=1
ind += 1

ind = 0
for x in X_test:
#     if x<0:
#         y_test[ind,0]=1
#     else:
#         y_test[ind,1]=1
if x < -50:
y_test[ind,0]=1
if x >= -50 and x < 0:
y_test[ind,1]=1
if x >= 0  and x < 50:
y_test[ind,2]=1
if x >= 50:
y_test[ind,3]=1
ind += 1

batch = 100

with tf.device('/gpu:0'):
X = tf.placeholder("float", [None, 1])
Y = tf.placeholder("float", [None, 4])
w1 = tf.Variable(tf.random_normal([1, 20], stddev=0.01))
b1 = tf.Variable(tf.zeros([20, ]))
act1 = tf.nn.relu(fc1)
w2 = tf.Variable(tf.random_normal([20, 4], stddev=0.01))
b2 = tf.Variable(tf.zeros([4, ]))
cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(py_x, Y))
predict_op = tf.argmax(py_x, 1)

``````
``````

(1000,) (1000, 4)
(10,) (10, 4)

``````
``````

In [18]:

#print(train_op,predict_op,cost)
sess = tf.Session()
#print(sess)
init = tf.global_variables_initializer()
sess.run(init)

``````
``````

In [16]:

for i in range(800):
sys.stdout.write('\r epoch : %d' % i)
sys.stdout.flush()
time.sleep(0.2)
#train
for start, end in zip(range(0, len(X_data), batch), range(batch, len(y_data), batch)):
#print(start,end)
Xd = np.mat([X_data[start:end]]).T
yd = y_data[start:end]
#print(Xd.shape,yd.shape,train_op)
sess.run(train_op, feed_dict={X: Xd, Y: yd})

print('')
print(i, np.mean(np.argmax(y_test, axis=1) ==sess.run(predict_op, feed_dict={X: np.mat(X_test).T})))

``````
``````

epoch : 799
799 0.8

``````
``````

In [ ]:

``````