Error while quantizing a model using LPOT

89 Views Asked by At

I was trying to quantize a trained model using LPOT in my linux machine. By following the below link

https://github.com/intel/lpot/tree/master/examples/helloworld/tf_example1

I have specified the Dataset path in the conf.yaml file and after that I tried to quantize the model but ended up with the below error.

ValueError: Found no files in --root matching: /home/u77217/.keras/datasets/fashion-mnist/--of-*

The dataset folder contains the following files:

  • t10k-images-idx3-ubyte.gz
  • t10k-labels-idx1-ubyte.gz
  • train-images-idx3-ubyte.gz
  • train-labels-idx1-ubyte.gz

My conf.yaml file look like this

#
# Copyright (c) 2021 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

version: 1.0

model:                                               # mandatory. used to specify model specific information.
  name: mobilenet_v1
  framework: tensorflow                              # mandatory. supported values are tensorflow, pytorch, pytorch_ipex, onnxrt_integer, onnxrt_qlinear or mxnet; allow new framework backend extension.

quantization:                                        # optional. tuning constraints on model-wise for advance user to reduce tuning space.
  calibration:
    sampling_size: 20                                # optional. default value is 100. used to set how many samples should be used in calibration.
    dataloader:
      dataset:
        ImageRecord:
          root: /home/u77217/.keras/datasets/fashion-mnist/            # NOTE: modify to calibration dataset location if needed
      transform:
        BilinearImagenet:
          height: 224
          width: 224

evaluation:                                          # optional. required if user doesn't provide eval_func in lpot.Quantization.
  accuracy:                                          # optional. required if user doesn't provide eval_func in lpot.Quantization.
    metric:
      topk: 1                                        # built-in metrics are topk, map, f1, allow user to register new metric.
    dataloader:
      batch_size: 32
      dataset:
        ImageRecord:
          root: /home/u77217/.keras/datasets/fashion-mnist/                   # NOTE: modify to evaluation dataset location if needed
      transform:
        BilinearImagenet:
          height: 224
          width: 224    
1

There are 1 best solutions below

0
ArunJose On

In lpot YAML file for dataset: if you are specifying ImageRecord Please arrange data in this way:

path/validation-000-of-100
path/validation-001-of-100
...
path/validation-099-of-100

The file name needs to follow this pattern: '* - * -of- *' and should be of tf record form.

As in your case you intend to use fashion mnist you could use the dataset configuration as below

dataset:
  FashionMNIST:
  root: /path/fmnist
  train: False
  download: True  

      

If download is True, it will download dataset to /path/fmnist, otherwise user should put train-labels-idx1-ubyte.gz, train-images-idx3-ubyte.gz, t10k-labels-idx1-ubyte.gz and t10k-images-idx3-ubyte.gz under /path/fmnist manually.

IN your case you could use root:/home/u77217/.keras/datasets/fashion-mnist/

Please refer to below link on how to use dataset for quantisation with lpot

https://github.com/intel/lpot/blob/cd8bdedadf185c0f0739dc7b232a415186b00578/docs/dataset.md