Skip to content

2.4.3

Choose a tag to compare

@PINTO0309 PINTO0309 released this 28 Jun 05:02
· 1716 commits to main since this release

2.4.3

Summary

  • stop re-transposing CONV_3D filters in the SavedModel exporter; flatbuffer-direct ModelIR already stores them as [d, h, w, in, out], which matches tf.nn.conv3d
  • stop re-transposing CONV_3D_TRANSPOSE filters for the same reason; ModelIR stores [d, h, w, out, in], matching tf.nn.conv3d_transpose
  • add SavedModel regression coverage for both 3D convolution kernels using TFLite/TF filter layouts
  • Tile.py line 122. When the multiples input is a numpy array, the code does range(len(input_tensor_2.shape)) instead of range(len(input_tensor_2)). For a 1-D multiples array like [4, 1, 1], .shape is (3,) so len(.shape) is 1 instead of 3. This produces a broken initial permutation and the conversion produces wrong outputs.
  • Slice.py, two separate lines. tf.clip_by_value(t=begin_, clip_value_min=0, clip_value_max=1) and the same for end_ crash because begin_ and end_ are int64 but the integer scalar bounds resolve to int32. Fix is to cast: tf.cast(begin_, tf.int32) and tf.cast(end_, tf.int32).
  • LayerNormalization.py. RF-DETR's DINOv2 backbone uses windowed attention which produces a normalisation axis that is not statically known at graph build time. tf_keras.layers.LayerNormalization(axis=axis)(input_tensor) throws TypeError or ValueError when axis is dynamic. Fix is a try/except that falls back to tf.nn.moments for those cases.

Validation

  • .venv/bin/python -m py_compile onnx2tf/tflite_builder/saved_model_exporter.py tests/test_tflite2sm_phase1.py
  • direct exporter smoke for CONV_3D and CONV_3D_TRANSPOSE SavedModel export/load/inference, both matching TensorFlow native outputs with np.testing.assert_allclose(..., rtol=1e-5, atol=1e-5)

Issues

What's Changed

New Contributors

Full Changelog: 2.4.2...2.4.3