In [3]:
import numpy as np

num_points = 1000
vectors_set = []
for i in xrange(num_points):
    x1 = np.random.normal(0.0, 0.55)
    y1 = x1 * 0.1 + 0.3 + np.random.normal(0.0, 0.03)
    vectors_set.append([x1, y1])
    
x_data = [v[0] for v in vectors_set]
y_data = [v[1] for v in vectors_set]

In [5]:
import matplotlib.pyplot as plt

plt.plot(x_data, y_data, 'ro', label='Original data')
plt.legend()
plt.show()



In [7]:
import tensorflow as tf
W = tf.Variable(tf.random_uniform([1], -1.0, 1.0))
b = tf.Variable(tf.zeros([1]))
y = W * x_data + b

In [8]:
loss = tf.reduce_mean(tf.square(y - y_data))

In [9]:
optimizer = tf.train.GradientDescentOptimizer(0.5)
train = optimizer.minimize(loss)

In [11]:
init = tf.global_variables_initializer()
sess = tf.Session()
sess.run(init)

In [20]:
for step in xrange(8):
    sess.run(train)
print step, sess.run(W), sess.run(b)


7 [ 0.10121813] [ 0.30044886]

In [15]:
plt.plot(x_data, y_data, 'ro', label='New data')
plt.plot(x_data, sess.run(W) * x_data + sess.run(b))
plt.legend()
plt.show()



In [31]:
for step in xrange(8):
    sess.run(train)
    print(step, sess.run(W), sess.run(b))


(0, array([ 0.10121822], dtype=float32), array([ 0.30044886], dtype=float32))
(1, array([ 0.10121822], dtype=float32), array([ 0.30044886], dtype=float32))
(2, array([ 0.10121822], dtype=float32), array([ 0.30044886], dtype=float32))
(3, array([ 0.10121822], dtype=float32), array([ 0.30044886], dtype=float32))
(4, array([ 0.10121822], dtype=float32), array([ 0.30044886], dtype=float32))
(5, array([ 0.10121822], dtype=float32), array([ 0.30044886], dtype=float32))
(6, array([ 0.10121822], dtype=float32), array([ 0.30044886], dtype=float32))
(7, array([ 0.10121822], dtype=float32), array([ 0.30044886], dtype=float32))

In [32]:
for step in xrange(8):
    sess.run(train)
    print(step, sess.run(loss))


(0, 0.00094194635)
(1, 0.00094194635)
(2, 0.00094194635)
(3, 0.00094194635)
(4, 0.00094194635)
(5, 0.00094194635)
(6, 0.00094194635)
(7, 0.00094194635)

In [34]:
for step in xrange(8):
    sess.run(train)
    print(step, sess.run(W), sess.run(b))
    print(step, sess.run(loss))
    
    # graphic display
    plt.plot(x_data, y_data, 'ro')
    plt.plot(x_data, sess.run(W) * x_data + sess.run(b))
    plt.xlabel('x')
    plt.xlim(-2, 2)
    plt.ylim(0.1, 0.6)
    plt.ylabel('y')
    plt.legend()
    plt.show()


(0, array([ 0.10121822], dtype=float32), array([ 0.30044886], dtype=float32))
(0, 0.00094194635)
(1, array([ 0.10121822], dtype=float32), array([ 0.30044886], dtype=float32))
(1, 0.00094194635)
(2, array([ 0.10121822], dtype=float32), array([ 0.30044886], dtype=float32))
(2, 0.00094194635)
(3, array([ 0.10121822], dtype=float32), array([ 0.30044886], dtype=float32))
(3, 0.00094194635)
(4, array([ 0.10121822], dtype=float32), array([ 0.30044886], dtype=float32))
(4, 0.00094194635)
(5, array([ 0.10121822], dtype=float32), array([ 0.30044886], dtype=float32))
(5, 0.00094194635)
(6, array([ 0.10121822], dtype=float32), array([ 0.30044886], dtype=float32))
(6, 0.00094194635)
(7, array([ 0.10121822], dtype=float32), array([ 0.30044886], dtype=float32))
(7, 0.00094194635)

In [51]:
row = 1000
col = 2
vectors_sets = []
for i in xrange(row):
    x1 = np.random.normal(0.0, 0.55)
    y1 = x1 * 0.1 + 0.3 + np.random.normal(0.0, 0.03)
    vectors_sets.append([x1, y1])
vectors = tf.constant(vectors_sets)
extended_vectors = tf.expand_dims(vectors, 0)
print extended_vectors.get_shape()


(1, 1000, 2)

In [ ]: