Understanding Convolutional Neural Network (CNN) in TensorFlow

In this tutorial, let us find out what Convolutional Neural Network (CNN) is and it’s uses with TensorFlow in Python code example. We will be using TensorFlow which is a popular deep learning framework.

Convolutional Neural Network Introduction:

Convolutional Neural Network is a specialized neural network for processing data that has an input shape like a image or 2D matrix. Moreover, it is used for image detection and classification. Convolutional Neural Network  is a class of artificial neural networks most commonly used to analyze visual imagery. Convolutional Neural Network can also be used to predict values , given the trained data.

A simple example:

The classic use of CNN is image classification. Above all, it is used to classify whether an image is a bird or a car. Let us go through the below example, where a CNN is used to predict the housing price with respect to rooms. Here we are using the popular deep learning library TensorFlow to make our Convolutional Neural Network (CNN).

1. Importing necessary libraries.

Here we are importing libraries required for this example.

import tensorflow as tf
import numpy as np
from tensorflow import keras

2. Training the data.

Now we pass in some values to train the function. Here ‘x’ represents the number of bedrooms whereas ‘y’ represents the cost of each house respectively.
Here there is only a single neuron for this function. The loss function measures the how good the guess is and then passes it to the optimizer.
Optimizer makes sure that the next guess is better than the one before.
Here the loss is ‘mean squared error‘ and optimizer is ‘stochastic gradient descent‘ , the TensorFlow documentation can be checked for more details.

The training of the data takes place in fit command.It tells us of fitting the values of ‘y’ for ‘x’

def house_model(y_new):
    x = np.array([1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 8.0, 9.0, 10.0,11.0, 12.0, 13.0], dtype=float)
    y = np.array([100.0, 150.0, 200.0, 250.0, 300.0, 350.0, 450.0, 500.0, 550.0,600.0, 650.0,700.0], dtype=float)
   
    model = tf.keras.Sequential([keras.layers.Dense(units=1,input_shape=[1])])
    model.compile(optimizer='sgd',loss='mean_squared_error')
    model.fit(x,y,epochs=4000)
    return (model.predict(y_new)[0]+1) //100

3. Predicting the value.

Here we are trying to predict the value for a 7  bedroom house., it is evident from the data that it costs 400., hence we are trying to make sure the output is close to 400.

prediction = house_model([7.0])
print(prediction)

Output:

Here we can see that the predicted result is close to 400. Increased epoch value leads to better results.

12/12 [==============================] - 0s 11ms/sample - loss: 209838.7500
Epoch 2/100
12/12 [==============================] - 0s 117us/sample - loss: 19126.5352
Epoch 3/100
12/12 [==============================] - 0s 97us/sample - loss: 2111.4070
Epoch 4/100
12/12 [==============================] - 0s 94us/sample - loss: 589.9004
Epoch 5/100
12/12 [==============================] - 0s 96us/sample - loss: 450.4402
Epoch 6/100
12/12 [==============================] - 0s 95us/sample - loss: 434.2926
Epoch 7/100
12/12 [==============================] - 0s 86us/sample - loss: 429.1788
Epoch 8/100
12/12 [==============================] - 0s 87us/sample - loss: 425.0830
Epoch 9/100
12/12 [==============================] - 0s 89us/sample - loss: 421.1125
Epoch 10/100
12/12 [==============================] - 0s 108us/sample - loss: 417.1864
Epoch 11/100
12/12 [==============================] - 0s 118us/sample - loss: 413.2977
Epoch 12/100
12/12 [==============================] - 0s 96us/sample - loss: 409.4454
Epoch 13/100
12/12 [==============================] - 0s 95us/sample - loss: 405.6286
Epoch 14/100
12/12 [==============================] - 0s 95us/sample - loss: 401.8479
Epoch 15/100
12/12 [==============================] - 0s 96us/sample - loss: 398.1024
Epoch 16/100
12/12 [==============================] - 0s 96us/sample - loss: 394.3917
Epoch 17/100
12/12 [==============================] - 0s 95us/sample - loss: 390.7153
Epoch 18/100
12/12 [==============================] - 0s 97us/sample - loss: 387.0735
Epoch 19/100
12/12 [==============================] - 0s 123us/sample - loss: 383.4654
Epoch 20/100
12/12 [==============================] - 0s 103us/sample - loss: 379.8912
Epoch 21/100
12/12 [==============================] - 0s 96us/sample - loss: 376.3503
Epoch 22/100
12/12 [==============================] - 0s 96us/sample - loss: 372.8422
Epoch 23/100
12/12 [==============================] - 0s 83us/sample - loss: 369.3668
Epoch 24/100
12/12 [==============================] - 0s 90us/sample - loss: 365.9237
Epoch 25/100
12/12 [==============================] - 0s 86us/sample - loss: 362.5131
Epoch 26/100
12/12 [==============================] - 0s 83us/sample - loss: 359.1340
Epoch 27/100
12/12 [==============================] - 0s 78us/sample - loss: 355.7863
Epoch 28/100
12/12 [==============================] - 0s 91us/sample - loss: 352.4701
Epoch 29/100
12/12 [==============================] - 0s 83us/sample - loss: 349.1844
Epoch 30/100
12/12 [==============================] - 0s 93us/sample - loss: 345.9299
Epoch 31/100
12/12 [==============================] - 0s 94us/sample - loss: 342.7055
Epoch 32/100
12/12 [==============================] - 0s 94us/sample - loss: 339.5108
Epoch 33/100
12/12 [==============================] - 0s 86us/sample - loss: 336.3465
Epoch 34/100
12/12 [==============================] - 0s 91us/sample - loss: 333.2111
Epoch 35/100
12/12 [==============================] - 0s 84us/sample - loss: 330.1054
Epoch 36/100
12/12 [==============================] - 0s 90us/sample - loss: 327.0284
Epoch 37/100
12/12 [==============================] - 0s 87us/sample - loss: 323.9803
Epoch 38/100
12/12 [==============================] - 0s 82us/sample - loss: 320.9605
Epoch 39/100
12/12 [==============================] - 0s 92us/sample - loss: 317.9686
Epoch 40/100
12/12 [==============================] - 0s 91us/sample - loss: 315.0049
Epoch 41/100
12/12 [==============================] - 0s 96us/sample - loss: 312.0686
Epoch 42/100
12/12 [==============================] - 0s 115us/sample - loss: 309.1598
Epoch 43/100
12/12 [==============================] - 0s 91us/sample - loss: 306.2781
Epoch 44/100
12/12 [==============================] - 0s 94us/sample - loss: 303.4231
Epoch 45/100
12/12 [==============================] - 0s 83us/sample - loss: 300.5948
Epoch 46/100
12/12 [==============================] - 0s 83us/sample - loss: 297.7930
Epoch 47/100
12/12 [==============================] - 0s 80us/sample - loss: 295.0171
Epoch 48/100
12/12 [==============================] - 0s 78us/sample - loss: 292.2673
Epoch 49/100
12/12 [==============================] - 0s 83us/sample - loss: 289.5433
Epoch 50/100
12/12 [==============================] - 0s 81us/sample - loss: 286.8441
Epoch 51/100
12/12 [==============================] - 0s 111us/sample - loss: 284.1707
Epoch 52/100
12/12 [==============================] - 0s 91us/sample - loss: 281.5216
Epoch 53/100
12/12 [==============================] - 0s 91us/sample - loss: 278.8977
Epoch 54/100
12/12 [==============================] - 0s 94us/sample - loss: 276.2981
Epoch 55/100
12/12 [==============================] - 0s 99us/sample - loss: 273.7229
Epoch 56/100
12/12 [==============================] - 0s 78us/sample - loss: 271.1713
Epoch 57/100
12/12 [==============================] - 0s 84us/sample - loss: 268.6435
Epoch 58/100
12/12 [==============================] - 0s 82us/sample - loss: 266.1396
Epoch 59/100
12/12 [==============================] - 0s 80us/sample - loss: 263.6588
Epoch 60/100
12/12 [==============================] - 0s 81us/sample - loss: 261.2013
Epoch 61/100
12/12 [==============================] - 0s 77us/sample - loss: 258.7663
Epoch 62/100
12/12 [==============================] - 0s 84us/sample - loss: 256.3547
Epoch 63/100
12/12 [==============================] - 0s 83us/sample - loss: 253.9650
Epoch 64/100
12/12 [==============================] - 0s 82us/sample - loss: 251.5979
Epoch 65/100
12/12 [==============================] - 0s 84us/sample - loss: 249.2526
Epoch 66/100
12/12 [==============================] - 0s 81us/sample - loss: 246.9293
Epoch 67/100
12/12 [==============================] - 0s 106us/sample - loss: 244.6275
Epoch 68/100
12/12 [==============================] - 0s 79us/sample - loss: 242.3474
Epoch 69/100
12/12 [==============================] - 0s 91us/sample - loss: 240.0884
Epoch 70/100
12/12 [==============================] - 0s 91us/sample - loss: 237.8507
Epoch 71/100
12/12 [==============================] - 0s 80us/sample - loss: 235.6335
Epoch 72/100
12/12 [==============================] - 0s 81us/sample - loss: 233.4371
Epoch 73/100
12/12 [==============================] - 0s 84us/sample - loss: 231.2612
Epoch 74/100
12/12 [==============================] - 0s 84us/sample - loss: 229.1056
Epoch 75/100
12/12 [==============================] - 0s 80us/sample - loss: 226.9702
Epoch 76/100
12/12 [==============================] - 0s 82us/sample - loss: 224.8547
Epoch 77/100
12/12 [==============================] - 0s 83us/sample - loss: 222.7585
Epoch 78/100
12/12 [==============================] - 0s 84us/sample - loss: 220.6823
Epoch 79/100
12/12 [==============================] - 0s 85us/sample - loss: 218.6251
Epoch 80/100
12/12 [==============================] - 0s 78us/sample - loss: 216.5873
Epoch 81/100
12/12 [==============================] - 0s 86us/sample - loss: 214.5685
Epoch 82/100
12/12 [==============================] - 0s 87us/sample - loss: 212.5685
Epoch 83/100
12/12 [==============================] - 0s 90us/sample - loss: 210.5872
Epoch 84/100
12/12 [==============================] - 0s 88us/sample - loss: 208.6243
Epoch 85/100
12/12 [==============================] - 0s 90us/sample - loss: 206.6795
Epoch 86/100
12/12 [==============================] - 0s 95us/sample - loss: 204.7533
Epoch 87/100
12/12 [==============================] - 0s 94us/sample - loss: 202.8445
Epoch 88/100
12/12 [==============================] - 0s 89us/sample - loss: 200.9537
Epoch 89/100
12/12 [==============================] - 0s 89us/sample - loss: 199.0808
Epoch 90/100
12/12 [==============================] - 0s 109us/sample - loss: 197.2249
Epoch 91/100
12/12 [==============================] - 0s 134us/sample - loss: 195.3868
Epoch 92/100
12/12 [==============================] - 0s 134us/sample - loss: 193.5656
Epoch 93/100
12/12 [==============================] - 0s 95us/sample - loss: 191.7613
Epoch 94/100
12/12 [==============================] - 0s 88us/sample - loss: 189.9739
Epoch 95/100
12/12 [==============================] - 0s 86us/sample - loss: 188.2032
Epoch 96/100
12/12 [==============================] - 0s 91us/sample - loss: 186.4487
Epoch 97/100
12/12 [==============================] - 0s 85us/sample - loss: 184.7109
Epoch 98/100
12/12 [==============================] - 0s 83us/sample - loss: 182.9890
Epoch 99/100
12/12 [==============================] - 0s 88us/sample - loss: 181.2835
Epoch 100/100
12/12 [==============================] - 0s 88us/sample - loss: 179.5939
[[393.59177]]

In addition to the number of bedrooms, it is possible to add more constraints and use more neurons to predict the housing price.

Documentation:

You may also see:

Comments are closed.