2017-06-06 155 views
0

我有[82,3,780,1024]張量的大小 - 合併82個不同的圖像幀 - 以uint8格式。一旦我開始插入這些數據,LMDB在大小方面就會變得瘋狂。插入前有沒有辦法壓縮這些張量?如何在插入LMDB數據集之前壓縮numpy數組?

對於插入我按照問題here

我找到cv2.encodecv2.decode一個解決方案,但它並不適用於這類張量AFAIK。

回答

0

您可以使用衆多快速內存壓縮算法之一。一個非常好的選擇是使用blosc庫,該庫本身允許您在這種情況下使用專用(或性能良好)的幾種算法。

您可以通過調用獲得支持的壓縮算法列表(在blosc 1.4.4版)

import blosc 
blosc.compressor_list() 
['blosclz', 'lz4', 'lz4hc', 'snappy', 'zlib', 'zstd'] 

,你可以壓縮/解壓縮使用通常blosc.compress(bytesobj, typesize=8, clevel=9, shuffle=1, cname='blosclz')blosc.decompress(bytesobj)方法的任何二進制數據或字符串。

我通常使用blosc變體之一,如果我需要速度,和bz2庫,如果我想非常好的壓縮比(但運行時間較慢)。