【发布时间】:2012-06-13 01:42:19
【问题描述】:
这是一种特殊的有损压缩,在 numpy 中很容易实现。
我原则上可以直接比较原始 (float64) 和重构 (float64(float32(original)) 并了解最大误差等信息。
除了查看我的实际数据的最大误差之外,是否有人知道这会产生什么类型的失真,例如作为原始值大小的函数?
我最好先将所有值(64 位)映射到 [-1,1] 上(作为极值的一部分,可以保留在 64 位中)以利用更大的密度浮动在零附近?
我正在添加一个我想到的特定案例。假设我有 500k 到 1e6 的值,范围从 -20 到 20,大约是 IID ~ Normal(mu=0,sigma=4) 所以它们已经非常集中在零附近,“20”是 ~5-sigma 罕见.假设它们是科学测量,其中真正的精度远低于 64 位浮点数,但很难真正准确地知道。我有大量单独的实例(可能是 TB 的价值),因此压缩具有很多实用价值,而 float32 是获得 50% 的快速方法(如果有的话,使用 gzip 等额外一轮无损压缩效果更好)。因此,“-20 到 20”消除了很多对非常大的值的担忧。
【问题讨论】:
标签: python numpy floating-point compression