Unleash the Power of Pixels: Python's Journey into CNNs!

Data Science CNN use case.


Python programming language and its libraries combined together form the powerful tools for solving Convolutional Neural Networks tasks.

In deep learning, a convolutional neural network or simply CNN is a class of deep neural networks usually applied to analyzing images.

Convolutional Neural Networks.
Convolutional Neural Networks meme.

Python Knowledge Base: Make coding great again.
- Updated: 2024-07-26 by Andrey BRATUS, Senior Data Analyst.




    The name “convolutional neural network” indicates that the network performs a mathematical operation called convolution. Convolutional networks are a specialized type of neural networks that use convolution in place of general matrix multiplication in at least one of their layers.
    Most common tasks are image and video recognition, recommender systems, image classification, image segmentation, medical image analysis, natural language processing, brain-computer interfaces, and financial time series.

    A CNN consists of an input layer, hidden layers and an output layer. In any feed-forward neural network, any middle layers are called hidden because their inputs and outputs are masked by the activation function and final convolution. In a convolutional neural network, the hidden layers include layers that perform convolutions. Typically this includes a layer that does multiplication or other dot product, and its activation function is commonly ReLU. This is followed by other convolution layers such as pooling layers, fully connected layers and normalization layers.



  1. Convolutional Neural Networks (CNN) in Python.


  2.         
    #Importing the libraries
    import numpy as np
    import pandas as pd
    import tensorflow as tf
    #Checking the tensorflow version
    tf.__version__
    
    #Importing and Preprocessing the Training set
    train_datagen = ImageDataGenerator(rescale = 1./255,
                               shear_range = 0.2,
                               zoom_range = 0.2,
                               horizontal_flip = True)
    training_set = train_datagen.flow_from_directory('dataset/training_set',
                                                     target_size = (64, 64),
                                                     batch_size = 32,
                                                     class_mode = 'binary')
    #Importing and Preprocessing the Test set
    test_datagen = ImageDataGenerator(rescale = 1./255)
    test_set = test_datagen.flow_from_directory('dataset/test_set',
                                                target_size = (64, 64),
                                                batch_size = 32,
                                                class_mode = 'binary')
    
    
    #Initialising the CNN
    cnn = tf.keras.models.Sequential()
    
    #Convolution
    cnn.add(tf.keras.layers.Conv2D(filters=32, kernel_size=3, activation='relu', input_shape=[64, 64, 3]))
    
    #Pooling
    cnn.add(tf.keras.layers.MaxPool2D(pool_size=2, strides=2))
    
    #Adding a second convolutional layer
    cnn.add(tf.keras.layers.Conv2D(filters=32, kernel_size=3, activation='relu'))
    cnn.add(tf.keras.layers.MaxPool2D(pool_size=2, strides=2))
    
    #Flattening
    cnn.add(tf.keras.layers.Flatten())
    
    #Full Connection
    cnn.add(tf.keras.layers.Dense(units=128, activation='relu'))
    
    #Output Layer
    cnn.add(tf.keras.layers.Dense(units=1, activation='sigmoid'))
    
    #Compiling the CNN
    cnn.compile(optimizer = 'adam', loss = 'binary_crossentropy', metrics = ['accuracy'])
    
    #Training the CNN on the Training set and evaluating it on the Test set
    cnn.fit(x = training_set, validation_data = test_set, epochs = 25)
    
    #Making prediction on a single image
    
    from keras.preprocessing import image
    test_image = image.load_img('dataset/single_prediction/cat_or_dog_1.jpg', target_size = (64, 64))
    test_image = image.img_to_array(test_image)
    test_image = np.expand_dims(test_image, axis = 0)
    result = cnn.predict(test_image)
    training_set.class_indices
    if result[0][0] == 1:
      prediction = 'dog'
    else:
      prediction = 'cat'
    
    print(prediction)
    




See also related topics: