为什么 tflite 模式中的 SparseIndexVector 是并集?

Why SparseIndexVector in tflite schema is union?

查看架构,我有一个问题。有 SparseIndexVector 类型是 union.

union SparseIndexVector {
  Int32Vector,
  Uint16Vector,
  Uint8Vector
}

这是SparsityParameters的子参数。但是不知道为什么要union

我唯一能猜到的是记忆。除了 Int32Vector 之外,还有其他原因必须是联合吗?

这样设计是为了尽可能高效地存储稀疏张量的元数据。如果张量本身比较小,用 int32 类型存储索引会很浪费。还要考虑一个量化的稀疏张量。如果元数据盲目使用int32类型,很容易变得比张量本身大。