Assignment 2
Assignment 2
import numpy as np
import tensorflow as tf
import matplotlib.pyplot as plt
from tqdm import tqdm
BATCH_SIZE = 32
NUM_BATCHES = 10000
NUM_SAMP = 400
class Data():
def __init__(self):
sigma = 0.1
np.random.seed()
def get_batch(self):
index = np.arange(2 * NUM_SAMP)
choices = np.random.choice(index, size=BATCH_SIZE)
#trainable variables
w1 = tf.get_variable(’w1’, [2, layer1_size], tf.float32, tf.random_normal_initializer
())
b1 = tf.get_variable(’b1’, [layer1_size], tf.float32, tf.zeros_initializer())
w2 = tf.get_variable(’w2’, [layer1_size, layer2_size], tf.float32, tf.random_normal_i
nitializer())
b2 = tf.get_variable(’b2’, [layer2_size], tf.float32, tf.zeros_initializer())
w3 = tf.get_variable(’w3’, [layer2_size, 1], tf.float32, tf.random_normal_initializer
())
b3 = tf.get_variable(’b3’, [], tf.float32, tf.zeros_initializer())
#perceptron
layer1 = tf.add(tf.matmul(x, w1), b1)
layer2 = tf.add(tf.matmul(tf.nn.elu(layer1), w2), b2)
out = tf.add(tf.matmul(tf.nn.elu(layer2), w3), b3)
#optimization functions
lam = .001
Assignment2.py Wed Sep 19 09:18:07 2018 2
loss = tf.losses.sigmoid_cross_entropy(t, logits) + tf.add_n([lam * tf.nn.l2_loss(v) for
v in tf.trainable_variables()])
optim = tf.train.MomentumOptimizer(learning_rate=.01, momentum=.95).minimize(loss)
sess = tf.Session()
sess.run(tf.global_variables_initializer())
data = Data()
#training
for _ in tqdm(range(0, NUM_BATCHES)):
x_np, t_np = data.get_batch()
loss_np, _ = sess.run([loss, optim], feed_dict={x: x_np, t: t_np})
plt.figure(1, figsize=[13,13])
plt.contourf(xx, yy, z)
plt.scatter(data.x0,data.y0, edgecolor=’k’)
plt.scatter(data.x1,data.y1, edgecolor=’k’)
plt.xlabel(’x’)
plt.ylabel(’y’)
plt.title(’Spirals’)
plt.show()
Spirals
10
0
y
10
10 5 0 5 10
x