Article Categories
- All Categories
-
Data Structure
-
Networking
-
RDBMS
-
Operating System
-
Java
-
MS Excel
-
iOS
-
HTML
-
CSS
-
Android
-
Python
-
C Programming
-
C++
-
C#
-
MongoDB
-
MySQL
-
Javascript
-
PHP
-
Economics & Finance
How can Tensorflow and pre-trained model be used for evaluation and prediction of data using Python?
TensorFlow and pre-trained models can be used for evaluation and prediction of data using the evaluate and predict methods. The batch of input images is first processed through the model, and the sigmoid function is applied to convert logits into probabilities for binary classification.
Read More: What is TensorFlow and how Keras work with TensorFlow to create Neural Networks?
A neural network that contains at least one convolutional layer is known as a convolutional neural network. We can use the Convolutional Neural Network to build learning model.
We will understand how to classify images of cats and dogs with the help of transfer learning from a pre-trained network. The intuition behind transfer learning for image classification is that if a model is trained on a large and general dataset, this model can be used to effectively serve as a generic model for the visual world. It would have learned the feature maps, which means the user won't have to start from scratch by training a large model on a large dataset.
Read More: How can a customized model be pre-trained?
Model Evaluation
The evaluate method calculates the loss and accuracy on a test dataset. This helps measure how well the pre-trained model performs on unseen data ?
import tensorflow as tf
# Evaluate the model on test dataset
print("Evaluation and prediction")
loss, accuracy = model.evaluate(test_dataset)
print('Test accuracy is :', accuracy)
Making Predictions
The predict method generates predictions for input data. For binary classification (cats vs dogs), we apply sigmoid activation and threshold the results ?
print("The batch of image from test set is retrieved")
image_batch, label_batch = test_dataset.as_numpy_iterator().next()
predictions = model.predict_on_batch(image_batch).flatten()
print("The sigmoid function is applied on the model, it returns logits")
predictions = tf.nn.sigmoid(predictions)
predictions = tf.where(predictions < 0.5, 0, 1)
print('Predictions are:\n', predictions.numpy())
print('Labels are:\n', label_batch)
Output
Evaluation and prediction 6/6 [==============================] - 3s 516ms/step - loss: 0.0276 - accuracy: 0.9844 Test accuracy is : 0.984375 The batch of image from test set is retrieved The sigmoid function is applied on the model, it returns logits Predictions are: [1 1 1 1 0 0 1 0 1 0 0 0 1 0 1 0 0 0 1 1 1 0 1 0 0 1 1 1 0 1 0 1] Labels are: [1 1 1 1 0 0 1 0 1 0 0 0 1 0 1 0 0 0 1 1 1 0 1 0 0 1 1 1 0 1 0 1]
Key Points
- The
evaluatemethod provides loss and accuracy metrics on test data - The
predictmethod generates raw predictions that need post-processing - Sigmoid activation converts logits to probabilities between 0 and 1
- Thresholding at 0.5 converts probabilities to binary classifications (0 for cat, 1 for dog)
Code credit ? https://www.tensorflow.org/tutorials/images/transfer_learning
Conclusion
Pre-trained models in TensorFlow provide powerful tools for image classification through transfer learning. The evaluate and predict methods enable efficient assessment and deployment of these models for real-world applications.
