You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When exporting a PyTorch model with dynamic shapes I hit
Traceback (most recent call last):
File "/home/nathaniel/dev/hood/./TFExport.py", line 106, in <module>
tf_model = nobuco.pytorch_to_keras(
File "/home/nathaniel/miniconda3/envs/hood/lib/python3.10/site-packages/nobuco/convert.py", line 340, in pytorch_to_keras
outputs_tf = keras_op(*args_tf, **kwargs_tf)
File "/home/nathaniel/miniconda3/envs/hood/lib/python3.10/site-packages/nobuco/layers/container.py", line 69, in __call__
outputs = op(*args, **kwargs)
File "/home/nathaniel/miniconda3/envs/hood/lib/python3.10/site-packages/nobuco/layers/container.py", line 69, in __call__
outputs = op(*args, **kwargs)
File "/home/nathaniel/miniconda3/envs/hood/lib/python3.10/site-packages/nobuco/layers/channel_order.py", line 27, in __call__
outputs = self.func(*args, **kwargs)
File "/home/nathaniel/miniconda3/envs/hood/lib/python3.10/site-packages/nobuco/layers/channel_order.py", line 59, in __call__
outputs = self.func(*args, **kwargs)
File "/home/nathaniel/miniconda3/envs/hood/lib/python3.10/site-packages/nobuco/node_converters/slice.py", line 203, in func
return slice_assign(sliced_tensor, slice_args, assigned_tensor)
File "/home/nathaniel/miniconda3/envs/hood/lib/python3.10/site-packages/nobuco/node_converters/slice.py", line 101, in slice_assign
idx = tf.where(idx < 0, idx + shape[real_index], idx)
File "/home/nathaniel/miniconda3/envs/hood/lib/python3.10/site-packages/tensorflow/python/util/traceback_utils.py", line 153, in error_handler
raise e.with_traceback(filtered_tb) from None
File "/home/nathaniel/miniconda3/envs/hood/lib/python3.10/site-packages/keras/src/layers/core/tf_op_layer.py", line 119, in handle
return TFOpLambda(op)(*args, **kwargs)
File "/home/nathaniel/miniconda3/envs/hood/lib/python3.10/site-packages/keras/src/utils/traceback_utils.py", line 70, in error_handler
raise e.with_traceback(filtered_tb) from None
ValueError: Exception encountered when calling layer "tf.__operators__.add_18" (type TFOpLambda).
None values not supported.
Call arguments received by layer "tf.__operators__.add_18" (type TFOpLambda):
• x=tf.Tensor(shape=(None,), dtype=int64)
• y=None
• name=None
The offending addition occurs in nobuco/node_converters/slice.py
...
idx=tf.convert_to_tensor(slice_spec)
idx=tf.where(idx<0, idx+shape[real_index], idx) # Addition in second argument to `tf.where` raises the exceptioncorresponding_range=tf.cast(idx, dtype=tf.int32)
...
where shape[real_index] can be None if the shape of sliced_tensor is dynamic.
As far as I can tell, this line is only relevant if there are negative indices. In my model, the indices are always positive, so I just commented out this line and the export went smoothly, but a proper fix to take dynamic shapes into account here would probably be ideal.
The text was updated successfully, but these errors were encountered:
When exporting a PyTorch model with dynamic shapes I hit
The offending addition occurs in
nobuco/node_converters/slice.py
where
shape[real_index]
can beNone
if the shape ofsliced_tensor
is dynamic.As far as I can tell, this line is only relevant if there are negative indices. In my model, the indices are always positive, so I just commented out this line and the export went smoothly, but a proper fix to take dynamic shapes into account here would probably be ideal.
The text was updated successfully, but these errors were encountered: