Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # coding: utf-8
- import numpy as np
- import tensorflow as tf
- import matplotlib.pyplot as plt
- rng = np.random
- #Params
- learning_rate = 0.01
- training_epochs = 2000
- display_step = 50
- #Create Training Data
- n_samples = 20
- train_X1 = rng.binomial(1,0.5,size=n_samples)
- train_X2 = rng.binomial(1,0.3,size=n_samples)
- train_X3 = rng.normal(1,1,n_samples)
- W1_real = rng.normal(10,1)
- W2_real = rng.normal(-3,1)
- W3_real = rng.normal(10,1)
- b_real = rng.normal(10,1)
- rand = rng.randn(n_samples)
- train_Y = W1_real*train_X1 + W2_real*train_X2 + W3_real*train_X3 + b_real + rand
- #Define Graph Input
- X1 = tf.placeholder("float")
- X2 = tf.placeholder("float")
- X3 = tf.placeholder("float")
- Y = tf.placeholder("float")
- W1 = tf.Variable(rng.randn(), name="weight1")
- W2 = tf.Variable(rng.randn(), name="weight2")
- W3 = tf.Variable(rng.randn(), name="weight3")
- b = tf.Variable(rng.randn(), name="bias")
- #Construct Linear Model
- sum_list = [tf.mul(X1,W1),tf.mul(X2,W2),tf.mul(X3,W3)] #pred = W1*X1+W2*X2+W3*X3+b
- pred_X = tf.add_n(sum_list)
- pred = tf.add(pred_X,b)
- #MSE
- cost = tf.reduce_sum(tf.pow(pred-Y,2))/(2*n_samples)
- #Gradient Descent
- optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(cost)
- init = tf.initialize_all_variables()
- #Launch the Graph
- with tf.Session() as session:
- session.run(init)
- for epoch in range(training_epochs):
- for (x1,x2,x3,y) in zip(train_X1,train_X2,train_X3,train_Y):
- session.run(optimizer, feed_dict={X1: x1, X2: x2, X3: x3, Y: y})
- #Display Logs per each steps
- if (epoch+1) % display_step==0:
- c = session.run(cost, feed_dict={X1: train_X1, X2: train_X2, X3: train_X3, Y: train_Y})
- print "Epoch:", '%04d' % (epoch+1), "cost=", "{:.9f}".format(c), \
- "W1=",session.run(W1),"W2=",session.run(W2),"W3=",session.run(W3),"b=",session.run(b)
- print "Optimization Finished!"
- training_cost = session.run(cost,feed_dict={X1: train_X1, X2: train_X2, X3: train_X3, Y: train_Y})
- print "training_cost=",training_cost
- print "Results: predicted value (true value)"
- print "W1=",session.run(W1),"(",W1_real,")"
- print "W2=",session.run(W2),"(",W2_real,")"
- print "W3=",session.run(W3),"(",W3_real,")"
- print "b=",session.run(b),"(",b_real,")",'\n'
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement