import numpy as np
import pylab as pl
from sklearn.datasets.samples_generator import make_moons
%matplotlib inline
# Functions for plotting 2D data and decision regions
def plot_data(X, y):
y_unique = np.unique(y)
colors = pl.cm.rainbow(np.linspace(0.0, 1.0, y_unique.size))
for this_y, color in zip(y_unique, colors):
this_X = X[y == this_y]
pl.scatter(this_X[:, 0], this_X[:, 1], c=color,
alpha=0.5, edgecolor='k',
label="Class %s" % this_y)
pl.legend(loc="best")
pl.title("Data")
def plot_decision_region(X, pred_fun):
min_x = np.min(X[:, 0])
max_x = np.max(X[:, 0])
min_y = np.min(X[:, 1])
max_y = np.max(X[:, 1])
min_x = min_x - (max_x - min_x) * 0.05
max_x = max_x + (max_x - min_x) * 0.05
min_y = min_y - (max_y - min_y) * 0.05
max_y = max_y + (max_y - min_y) * 0.05
x_vals = np.linspace(min_x, max_x, 30)
y_vals = np.linspace(min_y, max_y, 30)
XX, YY = np.meshgrid(x_vals, y_vals)
grid_r, grid_c = XX.shape
ZZ = np.zeros((grid_r, grid_c))
for i in range(grid_r):
for j in range(grid_c):
ZZ[i, j] = pred_fun(XX[i, j], YY[i, j])
pl.contourf(XX, YY, ZZ, 30, cmap = pl.cm.coolwarm, vmin= 0, vmax=1)
pl.colorbar()
pl.xlabel("x")
pl.ylabel("y")
You need to create a neural network model in TF that is able to discriminate the two classes in the following dataset:
X, Y = make_moons(n_samples=1000, noise= 0.2, random_state=3)
x_train = X[:500]
x_test = X[500:]
y_train = Y[:500]
y_test = Y[500:]
pl.figure(figsize=(8, 6))
plot_data(x_train, y_train)
For this you will need to create a neural network with one hidden layer. You cannot use prebuilt models
such as those in tf.estimator
. Hint: extend the logistic regression example from the TensorFlow handout.
Your answer must contain the following:
Your goal is to improve the performance of the text classifier in the Keras handout. This is are the things that you need to try:
Try different combinations and report your findings at the end. Which configuration got the best accuracy in test?