mirror of
https://github.com/vee1e/tflite-micro.git
synced 2026-09-01 09:51:22 +00:00
feat(compression): reject empty compression spec (#3678)
An empty spec list passed to compress() previously returned an unmodified model silently. Fail early with a clear error instead, since an empty spec is almost certainly a mistake. BUG=part of #3256
This commit is contained in:
parent
733736087d
commit
13cd6c1550
2 changed files with 10 additions and 0 deletions
|
|
@ -132,6 +132,11 @@ def compress(model_in: ByteString, specs: Iterable[spec.Tensor]) -> bytearray:
|
|||
Returns:
|
||||
A compressed flatbuffer with DECODE operators inserted.
|
||||
"""
|
||||
specs = list(specs)
|
||||
if not specs:
|
||||
raise compressor.CompressionError(
|
||||
"Compression spec is empty; no tensors to compress")
|
||||
|
||||
model = model_editor.read(model_in)
|
||||
compression_results: dict[tuple[int, int], compressor.CompressionResult] = {}
|
||||
|
||||
|
|
|
|||
|
|
@ -313,6 +313,11 @@ class TestCompression(unittest.TestCase):
|
|||
self.assertEqual(dcm_bytes[5] & 0x07, 4) # bitwidth = 4
|
||||
self.assertEqual(dcm_bytes[6], 4) # stride = num unique values
|
||||
|
||||
def test_empty_spec_raises(self):
|
||||
"""Empty compression spec is an error, not a silent no-op."""
|
||||
self.assertRaisesRegex(compressor.CompressionError, "empty",
|
||||
lambda: compress.compress(self.flatbuffer, []))
|
||||
|
||||
def test_smaller_bitwidth_raises(self):
|
||||
"""Specifying LUT compression with too small a bitwidth fails."""
|
||||
specs = [
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue