2016-03-28 17 views
1

大規模なデータセットを初めて使用しているので、私が問題に読んでいる説明とチュートリアルを外挿するのに問題があります。h5pyを使用してHDF5に大きな4D numpy配列を圧縮します。Killed:9

37019個の画像(それぞれ450x600x3)をnumpyの配列に保存し、それをトレーニング用のファイルに圧縮します。 37019x450x600x3のゼロ配列をインスタンス化し、後で修正するか、450x600x3配列を1つずつ追加する方が良いでしょうか?

今私はh5pyを使用していますが、それは殺し、その結果:9

import numpy as np 
import h5py 

imgarray = np.zeros((37019,450, 600, 3)) 

with h5py.File('deleteme.h5', 'a') as FOB: 
    FOB.create_dataset("imgarray",data=imgarray,compression="gzip",compression_opts=9) 

はその後、約5分かかります:

Killed: 9 

画像の数が少ないようになっているときに、この仕事をします37019ではなく3700となります。3700では、30MBの.h5ファイルが作成されます。

これは、配列がh5dyの1つのデータセットに対して大きすぎることを意味しますか?これを小さな塊、別々のデータセット、または別のものに保存する必要がありますか?あなたは後で簡単にアクセスしたり修正したりするために何をお勧めしますか?

助けてくれてありがとう!

答えて

0

zipアーカイブのサイズ制限がある可能性があります。それはまた、gzip圧縮に適用されることがあります。それとも、時間がかかりすぎるかもしれません。

h5pyのドキュメントには、h5pyファイルに保存したときに(オンザフライで圧縮解除したとき)、datasetがオンザフライで圧縮されていることが示されています。私はまた、それがchunkingと相互作用していることのいくつかの言及を見る。 h5py githubリポジトリまたは関連するメーリングリストを調べる必要があるかもしれません。

他の圧縮方法やパラメータを試しましたか?

簡単に圧縮するサイズの複数のデータセットにデータを保存することはどうですか?

0

おそらくこれを行うには良い方法がありますが、データセットをサイズ1000x450x600x3のいくつかのnumpy配列に分割し、gzipをうまく処理しました。それは25分かかりましたが、それはすべて400MBの.h5ファイルに保存されました。ありがとう!

関連する問題