I am trying to use a Keras feature space during inference to create a data window.
input_window= input_featurespace({'temp': [0, 0, 0, 0, 0, 0, 0, 0], 'proc': [0, 0, 0, 0, 0, 0, 0, 0], 'dsp_temp': [0, 0, 0, 0, 0, 0, 0, 0]}).
However, I am getting the following error:
``
File "/usr/local/lib/python3.12/site-packages/keras/src/layers/preprocessing/feature_space.py", line 709, in __call__
data = {key: self._convert_input(value) for key, value in data.items()}
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/keras/src/layers/preprocessing/feature_space.py", line 693, in _convert_input
if not isinstance(x, (tf.Tensor, tf.SparseTensor, tf.RaggedTensor)):
^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/keras/src/utils/module_utils.py", line 35, in __getattr__
self.initialize()
File "/usr/local/lib/python3.12/site-packages/keras/src/utils/module_utils.py", line 29, in initialize
raise ImportError(self.import_error_msg)
ImportError: This requires the tensorflow module. You can install it via
pip install tensorflow`
I understand that this is because Tensorflow has not been installed. However, since the inference device has storage constraints, I don't want to use Tensorflow in my inference environment. Is there any way to get feature space to work with TensorFlow?
**Comment From: mehtamansi29**
Hi @sibyjackgrove -
Thanks for reporting the issue. As you are trying to use a Keras feature space during inference as feature space, feature space define all the preprocessing once and re-use it at different stages of our system.
Here you can find more details about FeatureSpace using a [Keras preprocessing layer](https://keras.io/examples/structured_data/feature_space_advanced/#featurespace-using-a-keras-preprocessing-layer)
Using keras can structure the input like this:
import keras import tensorflow as tf
input_featurespace = keras.Input(shape=(8,), dtype=tf.int32, name='temp') input_featurespace_proc = keras.Input(shape=(8,), dtype=tf.int32, name='proc') input_featurespace_dsp_temp = keras.Input(shape=(8,), dtype=tf.int32, name='dsp_temp')
input_dict = { 'temp': input_featurespace, 'proc': input_featurespace_proc, 'dsp_temp': input_featurespace_dsp_temp }
inputs = input_dict inputs
For more help can you share your reproducible code here?
**Comment From: sibyjackgrove**
I am trying to reload a Keras preprocessor layer. The Preprocessor layer was created with TensorFLow backend. But I am trying to reload it for inference with Numpy backend in an environment without TensorFlow.
Please find the code below. I am unable to attack the model here.
import os os.environ['KERAS_BACKEND'] = 'numpy' import keras
input_featurespace= keras.models.load_model(filepath="saved_models/input_featurespace_w-8_f-4_o-2_v0.keras") input_window= input_featurespace({'temp1': [0, 0, 0, 0, 0, 0, 0, 0],'temp2': [0, 0, 0, 0, 0, 0, 0, 0], 'proc_temp': [0, 0, 0, 0, 0, 0, 0, 0], 'dsp_temp': [0, 0, 0, 0, 0, 0, 0, 0]})
```