In [2]:
import tensorflow as tf
import numpy as np
x=tf.placeholder(tf.float32,shape=[None,2])
y=tf.placeholder(tf.float32,shape=[None,1])

weights=tf.Variable(tf.random_normal([2,1]),dtype=tf.float32)
bias=tf.Variable(tf.random_normal([1]),dtype=tf.float32)



multiply1=tf.add(tf.matmul(x,weights),bias)
z=tf.nn.sigmoid(multiply1)


cost=tf.reduce_mean((y*tf.log(z)+(1-y)*tf.log(1-z))*-1)
optimizer = tf.train.GradientDescentOptimizer(0.01).minimize(cost)

inp=np.array([[0,0],[0,1],[1,0],[1,1]])
op=np.array([[0],[1],[1],[1]])
with tf.Session() as sess:
   
    tf.global_variables_initializer().run()
    for i in range(12001):
        res,_=sess.run([cost,optimizer],feed_dict={x:inp,y:op})
        if i%1000==0:
            print ("iteration= ",i,"cost= ",res)
    print ("Validating output for OR GATE")
    result=sess.run(z,feed_dict={x:inp})
    print (result)


iteration=  0 cost=  0.96807
iteration=  1000 cost=  0.274541
iteration=  2000 cost=  0.219755
iteration=  3000 cost=  0.183923
iteration=  4000 cost=  0.157698
iteration=  5000 cost=  0.137702
iteration=  6000 cost=  0.121984
iteration=  7000 cost=  0.109329
iteration=  8000 cost=  0.0989366
iteration=  9000 cost=  0.0902634
iteration=  10000 cost=  0.0829243
iteration=  11000 cost=  0.0766401
iteration=  12000 cost=  0.0712037
Validating output for OR GATE
[[ 0.1502305 ]
 [ 0.93981183]
 [ 0.94248253]
 [ 0.99930954]]

In [ ]: