In [1]:
import tensorflow as tf

In [2]:
g = tf.Graph()

In [3]:
with g.as_default():
    X = tf.placeholder(tf.float32, [4, 2], name='X')
    Y = tf.placeholder(tf.float32, [4, 1], name='Y')
    W1 = tf.Variable(tf.random_uniform([2,2], -1, 1), name='w1')
    b1 = tf.Variable(tf.zeros([2]), name='b1')
    W2 = tf.Variable(tf.random_uniform([2, 1], -1, 1), name='w2')
    b2 = tf.Variable(tf.zeros([1]), name='b2')
    layer_one = tf.sigmoid(tf.matmul(X, W1) + b1)
    pred = tf.sigmoid(tf.matmul(layer_one, W2) + b2)
    cost = tf.reduce_mean(((Y * tf.log(pred)) + ((1 - Y) * tf.log(1.0 - pred))) * -1)
    train_step = tf.train.GradientDescentOptimizer(.01).minimize(cost)
    init = tf.initialize_all_variables()

In [4]:
sess = tf.InteractiveSession(graph=g)

In [5]:
sess.run(init)

In [6]:
import numpy as np

In [7]:
data = {X: np.array([[0,0], [0,1], [1, 0], [1,1]]).reshape(4, 2), Y:np.array([False, True, True, False]).reshape(4, 1)}

In [8]:
for i in range(10000):
    sess.run(train_step, feed_dict=data)

In [9]:
print(sess.run(cost, feed_dict=data))

In [10]:
for i in range(10000):
    sess.run(train_step, feed_dict=data)

In [11]:
print(sess.run(cost, feed_dict=data))

In [12]:
for i in range(10000):
    sess.run(train_step, feed_dict=data)

In [13]:
print(1-sess.run(cost, feed_dict=data))

In [14]:
for i in range(10000):
    sess.run(train_step, feed_dict=data)

In [15]:
print(1-sess.run(cost, feed_dict=data))

In [16]:
for i in range(10000):
    sess.run(train_step, feed_dict=data)

In [17]:
print(1-sess.run(cost, feed_dict=data))

In [18]:
for i in range(10000):
    sess.run(train_step, feed_dict=data)

In [19]:
print(1-sess.run(cost, feed_dict=data))

In [20]:
for i in range(10000):
    sess.run(train_step, feed_dict=data)

In [21]:
print(1-sess.run(cost, feed_dict=data))

In [22]:
for i in range(10000):
    sess.run(train_step, feed_dict=data)

In [23]:
print(1-sess.run(cost, feed_dict=data))

In [24]:
for i in range(10000):
    sess.run(train_step, feed_dict=data)

In [25]:
print(1-sess.run(cost, feed_dict=data))

In [26]:
for i in range(10000):
    sess.run(train_step, feed_dict=data)

In [27]:
for i in range(10000):
    sess.run(train_step, feed_dict=data)

In [28]:
for i in range(10000):
    sess.run(train_step, feed_dict=data)

In [29]:
print(1-sess.run(cost, feed_dict=data))

In [30]:
for i in range(10000):
    sess.run(train_step, feed_dict=data)

In [31]:
print(1-sess.run(cost, feed_dict=data))

In [32]:
for i in range(50000):
    sess.run(train_step, feed_dict=data)

In [33]:
print(1-sess.run(cost, feed_dict=data))

In [34]:
for i in range(50000):
    sess.run(train_step, feed_dict=data)

In [35]:
print(1-sess.run(cost, feed_dict=data))

In [36]:
for i in range(50000):
    sess.run(train_step, feed_dict=data)

In [37]:
print(1-sess.run(cost, feed_dict=data))

In [38]:
print(sess.run(W1))

In [39]:
for i in range(50000):
    sess.run(train_step, feed_dict=data)

In [40]:
print(sess.run(W1))

In [41]:
print(1-sess.run(cost, feed_dict=data))

In [42]:
%notebook -e example.ipynb