How to use tensorflow for image classification

August 14, 2025
3 min read
By Cojocaru David & ChatGPT

Table of Contents

This is a list of all the sections in this post. Click on any of them to jump to that section.

How to Use TensorFlow for Image Classification: A Step-by-Step Guide

Want to build an image classifier with TensorFlow? This guide walks you through the entire process from setting up your environment to training and deploying a model. Whether you’re classifying cats vs. dogs or medical scans, TensorFlow’s intuitive tools make it easy. Let’s dive in!

“Deep learning will change the way we interact with every device.” Andrew Ng

Why TensorFlow Is Ideal for Image Classification

TensorFlow is a top choice for image classification because of its flexibility, performance, and strong community support. Here’s why:

  • Pre-trained models: Use models like ResNet or MobileNet for quick, high-accuracy results.
  • Easy-to-use Keras API: Build models with minimal code using TensorFlow’s high-level interface.
  • GPU acceleration: Speed up training with seamless NVIDIA GPU integration.
  • Cross-platform deployment: Export models to mobile (TensorFlow Lite) or web (TensorFlow.js).
  • Active community: Access tutorials, forums, and GitHub repositories for troubleshooting.

Setting Up Your TensorFlow Environment

Before coding, ensure your system is ready:

  1. Install Python 3.7+: Download from python.org.
  2. Install TensorFlow: Run pip install tensorflow in your terminal.
  3. Add key libraries: Install NumPy, Matplotlib, and scikit-learn for data handling:
    pip install numpy matplotlib scikit-learn  

Preparing Your Dataset

A well-structured dataset is critical for training. Follow these steps:

1. Organize Your Images

Use this folder structure:

data/
├── train/
│ ├── class1/
│ └── class2/
└── validation/
├── class1/
└── class2/

2. Augment Your Data

Expand your dataset with transformations to reduce overfitting:

from tensorflow.keras.preprocessing.image import ImageDataGenerator  
 
train_datagen = ImageDataGenerator(  
    rescale=1./255,  
    rotation_range=40,  
    zoom_range=0.2,  
    horizontal_flip=True  
)  

3. Load Images Automatically

Use flow_from_directory to label images by folder:

train_generator = train_datagen.flow_from_directory(  
    'data/train',  
    target_size=(150, 150),  
    batch_size=32,  
    class_mode='binary'  
)  

Building a CNN Model in TensorFlow

1. Define the Architecture

Create a Convolutional Neural Network (CNN) with Keras:

model = Sequential([  
    Conv2D(32, (3,3), activation='relu', input_shape=(150, 150, 3)),  
    MaxPooling2D(2,2),  
    Flatten(),  
    Dense(512, activation='relu'),  
    Dense(1, activation='sigmoid')  # Use 'softmax' for multi-class  
])  

2. Compile the Model

Specify optimizer, loss, and metrics:

model.compile(  
    optimizer='adam',  
    loss='binary_crossentropy',  
    metrics=['accuracy']  
)  

3. Train the Model

Fit the model to your data:

history = model.fit(  
    train_generator,  
    epochs=20,  
    validation_data=validation_generator  
)  

Evaluating and Optimizing Performance

1. Check Training Metrics

Plot accuracy and loss to spot overfitting:

plt.plot(history.history['accuracy'], label='Training Accuracy')  
plt.plot(history.history['val_accuracy'], label='Validation Accuracy')  
plt.legend()  

2. Improve Your Model

  • Transfer learning: Fine-tune models like MobileNetV2.
  • Hyperparameter tuning: Adjust learning rate or batch size.
  • Regularization: Add dropout layers to prevent overfitting.

Deploying Your Model

1. Save the Trained Model

model.save('my_image_classifier.h5')  

2. Make Predictions

Load the model and classify new images:

loaded_model = load_model('my_image_classifier.h5')  
prediction = loaded_model.predict(new_image)  
print("Predicted class:", "Dog" if prediction > 0.5 else "Cat")  

#tensorflow #machinelearning #computervision #deeplearning #imageclassification