Skip to content

Commit 1d61a18

Browse files
committed
Create tensorflowproject1.py
1 parent fe60955 commit 1d61a18

File tree

1 file changed

+81
-0
lines changed

1 file changed

+81
-0
lines changed
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
# import necessary packages
2+
import numpy as np
3+
import matplotlib.pyplot as plt
4+
import tensorflow as tf
5+
from tensorflow.keras.layers import Input
6+
from tensorflow.keras.models import Sequential #This allows appending layers to existing models
7+
from tensorflow.keras.layers import Dense #This allows defining the characteristics of a particular layer
8+
from tensorflow.keras import optimizers #This allows using whichever optimiser we want (sgd,adam,RMSprop)
9+
from tensorflow.keras import regularizers #This allows using whichever regularizer we want (l1,l2,l1_l2)
10+
from tensorflow.keras.utils import to_categorical #This allows using categorical cross entropy as the cost function
11+
from sklearn.model_selection import train_test_split
12+
13+
14+
# Define the Runge function
15+
def runge_function(x):
16+
return 1 / (1 + 25 * x**2)
17+
18+
# Generate training data
19+
np.random.seed(0)
20+
x = np.linspace(-1, 1, 200).reshape(-1, 1)
21+
y = runge_function(x)
22+
23+
# split into train and test data
24+
train_size = 0.8
25+
test_size = 1 - train_size
26+
X_train, X_test, Y_train, Y_test = train_test_split(x, y, train_size=train_size,test_size=test_size)
27+
28+
epochs = 1000
29+
batch_size = 100
30+
n_neurons_layer1 = 128
31+
n_neurons_layer2 = 128
32+
n_categories = 1
33+
eta_vals = np.logspace(-5, 1, 7)
34+
lmbd_vals = np.logspace(-5, 1, 7)
35+
def create_neural_network_keras(n_neurons_layer1, n_neurons_layer2, n_categories, eta, lmbd):
36+
model = Sequential()
37+
model.add(Dense(n_neurons_layer1, activation='tanh', kernel_regularizer=regularizers.l2(lmbd)))
38+
model.add(Dense(n_neurons_layer2, activation='tanh', kernel_regularizer=regularizers.l2(lmbd)))
39+
model.add(Dense(n_categories, activation='linear'))
40+
sgd = optimizers.SGD(learning_rate=eta)
41+
model.compile(loss='mse', optimizer=sgd, metrics=['mse'])
42+
return model
43+
44+
DNN_keras = np.zeros((len(eta_vals), len(lmbd_vals)), dtype=object)
45+
for i, eta in enumerate(eta_vals):
46+
for j, lmbd in enumerate(lmbd_vals):
47+
DNN = create_neural_network_keras(n_neurons_layer1, n_neurons_layer2, n_categories,
48+
eta=eta, lmbd=lmbd)
49+
DNN.fit(X_train, Y_train, epochs=epochs, batch_size=batch_size, verbose=0)
50+
scores = DNN.evaluate(X_test, Y_test)
51+
DNN_keras[i][j] = DNN
52+
print("Learning rate = ", eta)
53+
print("Lambda = ", lmbd)
54+
print("Test MSE: %.3f" % scores[1])
55+
print()
56+
57+
import seaborn as sns
58+
sns.set()
59+
train_accuracy = np.zeros((len(eta_vals), len(lmbd_vals)))
60+
test_accuracy = np.zeros((len(eta_vals), len(lmbd_vals)))
61+
for i in range(len(eta_vals)):
62+
for j in range(len(lmbd_vals)):
63+
DNN = DNN_keras[i][j]
64+
train_accuracy[i][j] = DNN.evaluate(X_train, Y_train)[1]
65+
test_accuracy[i][j] = DNN.evaluate(X_test, Y_test)[1]
66+
fig, ax = plt.subplots(figsize = (10, 10))
67+
sns.heatmap(train_accuracy, annot=True, ax=ax, cmap="viridis")
68+
ax.set_title("Training Accuracy")
69+
ax.set_ylabel("$\eta$")
70+
ax.set_xlabel("$\lambda$")
71+
plt.show()
72+
73+
fig, ax = plt.subplots(figsize = (10, 10))
74+
sns.heatmap(test_accuracy, annot=True, ax=ax, cmap="viridis")
75+
ax.set_title("Test Accuracy")
76+
ax.set_ylabel("$\eta$")
77+
ax.set_xlabel("$\lambda$")
78+
plt.show()
79+
80+
81+

0 commit comments

Comments
 (0)