2016-04-07 24 views
0

ディスクに保存する必要がある~15000個の3次元テンソル(それぞれサイズ2x300x20)があります。私は2つのオプションをチェックしました: 1. 1つの大きなテンソルのサイズ15000x2x300x20 2. 15000テンソルのテーブル。トーチ:テンソル対テーブル:ディスク容量

私は1つの大きなテンソルでtorch.save()を使用して保存することをお勧めしますが、残念ながら新しいファイルは最初のオプションではるかに大きくなります。何故ですか ?テンソルをディスクに保存する効率的な方法はありますか? (たとえば、160テンソル(15000ではなく)の場合、ファイルは2番目のオプションで10 MGに対して1.3 GBです)。

答えて

0

2番目のオプション(テンソルのテーブル)には、各2x300x20テンソルのヘッダーのN(= 15,000)倍が含まれているためオーバーヘッドがあります(下記参照)。しかし、このオーバーヘッドはここではごくわずかです。データの総量だから、両方のオプションは、となり、おおよそになります。

これは、基本となるストレージがアーカイブの一部であることに注意してください。それが参照するので、ここで

x.t7は、y.t7のために782キロバイト対119Bの周りにある:それはいくつかの理由で、ストレージは現在のテンソルのサイズよりも大きい場合、アーカイブは例えば、になることを意味します100,000要素の基本ストレージ。

最初のオプションでは、この場合にはもう一度チェックしてください。

-

(ここではV 1type of the objectを表し、最初の整数(ここでは4)、およびそのバージョンのようなトーチクラス他のメタデータのために:

$ th -e "torch.save('foo.t7', torch.Tensor{1234}, 'ascii')" 
$ xxd -g1 foo.t7 
00000000: 34 0a 31 0a 33 0a 56 20 31 0a 31 38 0a 74 6f 72 4.1.3.V 1.18.tor 
00000010: 63 68 2e 44 6f 75 62 6c 65 54 65 6e 73 6f 72 0a ch.DoubleTensor. 
00000020: 31 0a 31 0a 31 0a 31 0a 34 0a 32 0a 33 0a 56 20 1.1.1.1.4.2.3.V 
00000030: 31 0a 31 39 0a 74 6f 72 63 68 2e 44 6f 75 62 6c 1.19.torch.Doubl 
00000040: 65 53 74 6f 72 61 67 65 0a 31 0a 31 32 33 34 0a eStorage.1.1234. 

含まアーカイブを見ることができるように:ASCIIモードでのダミートーチテンソルをシリアライズ、等を入力し、最後の値(ここでは1234)を入力します。

関連する問題