tensorflow / tensorflow/model-optimization

quantize_model() cannot detect a keras.Sequential model

Open
#1,144 3 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug
Dominant language
Python
Stars
1.6k
Forks
349
Avg merge
3d 2h
Merged PRs (30d)
1

Description

Prior to filing: check that this should be a bug instead of a feature request. Everything supported, including the compatible versions of TensorFlow, is listed in the overview page of each technique. For example, the overview page of quantization-aware training is here. An issue for anything not supported should be a feature request.

Describe the bug
I'm passing a keras sequential model into quantize_model(), and I'm getting the error that the model isn't a sequential model.

System information

Carried out in:
Google Colab

TensorFlow version (installed from source or binary):
2.17.0

TensorFlow Model Optimization version (installed from source or binary):
0.8.0

Python version:
3.10.12

Describe the expected behavior
prepare a keras sequential model built from scratch that was imported via load_model()

Describe the current behavior
ValueError: to_quantize can only either be a keras Sequential or Functional model.

Code to reproduce the issue
!pip install tensorflow_model_optimization

import pandas as pd
import numpy as np
import time
import tensorflow as tf
import os
import tempfile
import keras
import tensorflow_model_optimization as tfmot
from google.colab import drive
from tensorflow.keras.models import load_model

drive.mount('/content/drive')
%cd /content/drive/My Drive/CS528/HW3

model = load_model('/content/drive/My Drive/CS528/HW3/q1_model.keras')

quant_aware_model_tflite = '/content/drive/My Drive/CS528/HW3/s_mnist_quant_aware_training.tflite'
quantize_model = tfmot.quantization.keras.quantize_model
q_aware_model = quantize_model(model)

Screenshots
If applicable, add screenshots to help explain your problem.

Additional context
I've already checked the same compound conditional using the imported model just before calling quantize_model(), and it behaves as it should. Only when quantize_model() is actually handling the model does it seem to think the model isn't a tf.keras.Sequential object.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing the reported failure with TensorFlow 2.17.0, TensorFlow Model Optimization 0.8.0, and the loaded model from load_model(). Read the quantize_model() entry point and its Sequential or Functional model check. Done means a keras.Sequential model loaded from a .keras file is accepted, with regression coverage for the reported case.

Written by the indexing model from the issue text.

Assessment

Tech stack
keras, python, tensorflow
Domain
machine-learning
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.