huang06 opened a new issue, #1008:
URL: https://github.com/apache/submarine/issues/1008

   ## Description
   
   When importing some `tensorflow_v2` modules, the subsequent TF2 functions 
cannot work properly.
   
   I found out that some modules call the `tensorflow.disable_v2_behavior` 
function when they are imported. It will disable the subsequent TF2 behaviors.
   
   ```text
   cd submarine-sdk/pysubmarine/submarine
   
   $ grep -rnH 'disable_v2_behavior'
   ml/tensorflow_v2/layers/core.py:20:tf.compat.v1.disable_v2_behavior()
   utils/tf_utils_v2.py:26:    tf.compat.v1.disable_v2_behavior()
   utils/tf_utils_v2.py:57:        tf.compat.v1.disable_v2_behavior()
   ```
   
   Furthermore, without the `tensorflow.disable_v2_behavior`, the tests still 
work as usual. Maybe the `disable_v2_behavior` is not necessary to the tf2 
modules.
   
   We should remove the `tf.compat.v1.disable_v2_behavior` to avoid the similar 
problem.
   
   ## How to reproduce the TF2 error
   
   Create Python venv.
   
   ```bash
   cd submarine-sdk/pysubmarine
   python3 -m venv .venv
   source .venv/bin/activate
   python3 -m pip install -e .[tf2]
   ```
   
   Create `demo.py` and copy the following Python code into it.
   
   ```python
   # demo.py
   import tensorflow as tf
   
   from submarine.ml.tensorflow_v2.model import DeepFM   # call 
`tf.compat.v1.disable_v2_behavior` function
   
   
   class LinearNNModel(tf.keras.Model):
       def __init__(self):
           super().__init__()
           self.dense1 = tf.keras.layers.Dense(1, activation=tf.nn.relu)  # One 
in and one out
   
       def call(self, x):
           y_pred = self.dense1(x)
           return y_pred
   
   
   model = LinearNNModel()
   input_arr = tf.random.uniform((1, 5))
   model(input_arr)
   
   model.save('sample-model')
   ```
   
   Running the Python code. the error message shows that the TF2 function 
cannot work properly.
   
   ```bash
   $ python3 demo.py
   
   ...
   Traceback (most recent call last):
     File "/home/tom/huang06/submarine/submarine-sdk/pysubmarine/demo.py", line 
21, in <module>
       model.save('sample-model')
     File 
"/home/tom/huang06/submarine/submarine-sdk/pysubmarine/.venv/lib/python3.10/site-packages/keras/utils/traceback_utils.py",
 line 67, in error_handler
       raise e.with_traceback(filtered_tb) from None
     File 
"/home/tom/huang06/submarine/submarine-sdk/pysubmarine/.venv/lib/python3.10/site-packages/keras/saving/save.py",
 line 142, in save_model
       raise NotImplementedError(
   NotImplementedError: Saving the model to HDF5 format requires the model to 
be a Functional model or a Sequential model. It does not work for subclassed 
models, because such models are defined via the body of a Python method, which 
isn't safely serializable. Consider saving to the Tensorflow SavedModel format 
(by setting save_format="tf") or using `save_weights`.
   ```
   
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to