Building a Simple Neural Network

Greetings! Some links on this site are affiliate links. That means that, if you choose to make a purchase, The Click Reader may earn a small commission at no extra cost to you. We greatly appreciate your support!


Until now, we have mostly used custom functions to build and train a model. However, building more complicated neural networks using custom functions is a difficult task. Luckily, there is a much simpler way to build and train neural network models in TensorFlow 2.0.

In this chapter, you will learn how to use TensorFlow more efficiently for building and training deep learning models. We will be developing a neural network that tries to learn the following relationship between two variables $x$ and $y$.

$$y = 2x + 5$$

1. Preparing the data

For this, let us first start by generating dummy data to train our model.

# Generating random values for x and y
x = tf.random.normal((100, ), dtype=tf.dtypes.float32, seed=20)
y = x*2 + 5 

2. Model Building

For the purpose of this chapter, we will be building a very simple Neural Network architecture which will have three layers:

  • Input layer with a single node.
  • Hidden layer with 5 nodes.
  • Output layer with only a single node.

Here is a visual representation of the model we will be building:

Building a Simple Neural Network

We will be using the Sequential() function for defining our desired neural network:

# Defining the model
model = tf.keras.models.Sequential([
  tf.keras.layers.Dense(units=1, input_shape=[1], name="input_layer"), 
  tf.keras.layers.Dense(5, activation='relu', name="hidden_layer"),
  tf.keras.layers.Dense(1, name="output_layer")

The first layer of the model is the input layer which takes an input of shape (1). The second layer is a hidden layer having 5 nodes and has a ReLU activation function. The final layer is the output layer that has a single node.

3. Model Training

Next, we compile the model using the compile() function and pass the names of optimizer and loss function. The summary of the model better explains the model we built.

model.compile(optimizer='sgd', loss='mean_squared_error')
Model: "sequential"
Layer (type)                 Output Shape              Param #   
input_layer (Dense)          (None, 1)                 2         
hidden_layer (Dense)         (None, 5)                 10        
output_layer (Dense)         (None, 1)                 6         
Total params: 18
Trainable params: 18
Non-trainable params: 0

Finally, we train the model for 100 epochs by passing the $x$ and $y$ data to the fit() function of the model.

history =, y, epochs = 100, steps_per_epoch=100)

4. Visualizing the results

The value of losses computed during each epoch will be stored in the history of the fitted model. We can simply plot the value of losses to view how well the model is training.

# Visualizing the loss from the model history
plt.xlabel('Num of epochs')
building a simple neural network in tensorflow 2.0

This is how easy it is to build a Neural Network using TensorFlow 2.0. In the next chapter, you will learn to build and train Convolutional Neural Networks using TensorFlow 2.0 for classifying images.

Building a Simple Neural NetworkBuilding a Simple Neural Network

Do you want to learn Python, Data Science, and Machine Learning while getting certified? Here are some best selling Datacamp courses that we recommend you enroll in:

  1. Introduction to Python (Free Course) - 1,000,000+ students already enrolled!
  2. Introduction to Data Science  in Python- 400,000+ students already enrolled!
  3. Introduction to TensorFlow for Deep Learning with Python - 90,000+ students already enrolled!
  4. Data Science and Machine Learning Bootcamp with R - 70,000+ students already enrolled!

Leave a Comment