2021-04-11 01:41 PM
I'm trying to use STM32AI quantize -q .json to quantize a Keras .H5. However, I never got it working.
Version: STM32 XCUBE-AI 6.0.0
tensorflow: I tried tf 2.0 and tf 1.15 installed
Platform. tried on both window and Linux (ubuntu 18.04)
Command line:
C:\Users\****\STM32Cube\Repository\Packs\STMicroelectronics\X-CUBE-AI\6.0.0\Utilities\windows\stm32ai quantize -q cfg_mnist_ss_sa_pc.json
Error message:
Neural Network Tools for STM32AI v1.4.1 (STM.ai v6.0.0-RC6)
INTERNAL ERROR: 'Flags' object has no attribute 'module_directory'
Solved! Go to Solution.
2021-04-12 12:12 AM
Hello,
The reported error is a typo issue during the management of a specific error in the quantization script. In this case, the original issue indicates that the script is not able to import the user scripts (referenced by the json fle), directly or indirectly through the imports inside the script itself. To fix the error message, you can duplicate the line "modules_directory" and to replace "modules_directory" by "module_directory", key name w/o "s".
{
...
"batch_size": "128",
"modules_directory": "kws_modules",
"module_directory": "kws_modules",
...
}
Note in v6.0, the PIL Python module is not available.
br,
Jean-Michel
2021-04-12 12:12 AM
Hello,
The reported error is a typo issue during the management of a specific error in the quantization script. In this case, the original issue indicates that the script is not able to import the user scripts (referenced by the json fle), directly or indirectly through the imports inside the script itself. To fix the error message, you can duplicate the line "modules_directory" and to replace "modules_directory" by "module_directory", key name w/o "s".
{
...
"batch_size": "128",
"modules_directory": "kws_modules",
"module_directory": "kws_modules",
...
}
Note in v6.0, the PIL Python module is not available.
br,
Jean-Michel
2021-04-15 01:12 PM
Actually, it didn't solve my problem. I tried the example Mnist, it is working fine. However, the same approach didn't work for cfg_kws_ss_sa.json and also cfg_kws_ua_ua.json. I also created my own Har.json. Here is my json file:
{
"model_name": "Har",
"path_to_floatingpoint_h5": ".\\Har\\har.h5",
"quant_test_set_dir":"",
"quant_test_ratio": "0.3",
"evaluation_test_set_dir":"",
"batch_size": "50",
"modules_directory": ".\\Har\\",
"module_directory": ".\\Har\\",
"filename_test_set_generation": "test_har.py",
"filename_quantizer_algos": "quantizer_algos_user.py",
"algorithm": "MinMax",
"arithmetic": "Integer",
"weights_integer_scheme": "SignedSymmetric",
"activations_integer_scheme": "SignedAsymmetric",
"per_channel": "False",
"output_directory": "HAR_Quantization_results"
}
It always said (the same is true for kws example).
QUANTIZER ERROR: E503(QuantParamError): Unable to load the module "test_har" (modules_dir=.\Har), but the directory is there and also the file.
For cfg_kws_ss_sa.json, it is the same error:
E502(QuantParamError): Unable to load the module "test_set_generation_flatten (module_dir=kws_modules) (but the directory and also the file both are in the folder".
And also the interesting part is: for mnist, even I didn't add
"module_directory", only have "modules_directory", it worked.
Please help.
Thanks,
Guoping
2021-04-15 06:48 PM
I was able to figure it out. The STM XCUBE-AI uses its own Python packages and Python version. When we are creating customized dataset, we can only use available packages in that folder \6.0.0\Utilities.
2021-04-16 01:55 AM
Hi, Guoping,
Thanks, I confirm the highlighted point, only the available Python packages from \6.0.0\Utilities\Windows folder can be used.
A possible workaround, if really necessary is to add (to copy) manually the expected Python package in this directory, however, to be vigilant with the used version to avoid to break the installation. To know the used Python version, following command 'stm32ai --tools-version' can be used.
br,
Jean-Michel