#range #numeric #quantization #numbers #bandwidth #smaller #save

numquant

将数字量化到更小的范围以节省带宽或内存数据类型,并再次进行量化

2 个不稳定版本

0.2.0 2022年4月11日
0.1.0 2022年4月11日

#7 in #smaller

Download history 170/week @ 2024-04-08 154/week @ 2024-04-15 218/week @ 2024-04-22 127/week @ 2024-04-29 94/week @ 2024-05-06 204/week @ 2024-05-13 148/week @ 2024-05-20 110/week @ 2024-05-27 152/week @ 2024-06-03 67/week @ 2024-06-10 157/week @ 2024-06-17 82/week @ 2024-06-24 61/week @ 2024-07-01 104/week @ 2024-07-08 80/week @ 2024-07-15 92/week @ 2024-07-22

348 每月下载次数
用于 5 个crate(通过 adder-codec-core

MIT/Apache

12KB
178

numquant

将数字量化到更小的范围以节省带宽或内存。

期望输入浮点值在一个给定的范围内。超出此范围的值将被钳位。然后输入值将被量化到一个给定的整数范围。

例如,给定允许的范围 -1000.0 到 1000.0,以及量化范围 0 到 255(以适应一个字节),-1000.0 将量化为 0,1000.0 将量化为 255,介于两者之间的值将在 0 和 255 之间线性插值。

示例

此示例使用类型 Quantized<U8<0, 1000>>,该类型将任何介于 0.0 和 1000.0 之间的浮点数转换为字节(其范围为 0 到 255)。一些精度会丢失,但可以恢复一个近似值。

let original = 500.0;
// Quantize the value into a byte.
// Quantization supports inputs between 0 and 1000.
let quantized = Quantized::<U8<0, 1000>>::from_f64(original);
// Convert it back to an f64
let dequantized = quantized.to_f64();
// The conversion isn't lossless, but the dequantized value is close to the original:
approx::assert_abs_diff_eq!(original, dequantized, epsilon = U8::<0, 1000>::max_error());

依赖关系

~170KB