代表通信~AIに必須?HDF5について
![](https://sinlab.future-tech-association.org/wp-content/uploads/2020/07/shake-hand.jpg)
こんばんは。代表の草場です。
本日は週一恒例の地図の会でした。Google Mapを分解してみよう、がテーマで面白かったです。まだまだ基礎知識への理解が必須。引き続き、令和の伊能忠敬、黒さんに教えを仰ぎます。
さて、PyTorchに関して、再度勉強しています。HDF5を扱う必要が出てきました。公式によると、
「h5pyパッケージは、HDF5バイナリデータフォーマットへのPythonicインターフェースです。HDF5を使うと、膨大な量の数値データを保存することができ、NumPyからそのデータを簡単に操作することができます。例えば、ディスクに保存されている数テラバイトのデータセットを、あたかも実際のNumPy配列であるかのようにスライスすることができます。何千ものデータセットを一つのファイルに保存し、好きなように分類したりタグ付けしたりすることができます。」
大量のデータを扱うDeep Learningには必須ですね。
HDF5ファイルは以下の種類のオブジェクトを格納するコンテナです。
1.配列のようなデータの集合体であるデータセット
2.データセットや他のグループを保持するフォルダのようなコンテナであるグループ
h5pyを使うときに覚えておくべき最も基本的なことは、以下の一つ。
グループは辞書のように動作し、データセットはNumPyの配列のように動作する
簡単に見えますね。以下公式のスタートガイドです。
誰かがあなたに mytestfile.hdf5 という HDF5 ファイルを送ってきたとします。最初に必要なことは、ファイルを開いて読むことです。
>>>import h5py
>>>f = h5py.File(‘mytestfile.hdf5’, ‘r’)
ファイルオブジェクトはあなたの出発点です。h5py.FileはPythonの辞書のように動作することを覚えておいてください。そのため、
>>> list(f.keys())
を見ると、fのキー、
[‘mydataset’]
が返されます。ファイルの中に、mydatasetというデータセットが1つあるということですね。データセットをDatasetオブジェクトとして調べてみましょう。
>>> dset = f[‘mydataset’]
得られたオブジェクトは配列ではなく、HDF5のデータセットです。NumPy配列のように、データセットには形状とデータ型の両方があります。
>>>dset.shape
(100,)
>>> dset.dtype
dtype(‘int32’)
なるほどな。
また、配列スタイルのスライスもサポートしています。ファイル内のデータセットからデータを読み書きする方法です。
>> dset[…] = np.arange(100)
>>> dset[0] 0
>>> dset[10] 10
>>> dset[0:100:10] array([ 0, 10, 20, 30, 40, 50, 60, 70, 80, 90])
使いやすいですね。
明日もPyTorch。
EVENTS
![](https://sinlab.future-tech-association.org/wp-content/uploads/event_icon2.png)
![](https://sinlab.future-tech-association.org/wp-content/uploads/event_icon2.png)
![](https://sinlab.future-tech-association.org/wp-content/uploads/event_icon1.png)
![](https://sinlab.future-tech-association.org/wp-content/uploads/event_icon1.png)
![](https://sinlab.future-tech-association.org/wp-content/uploads/event_icon2.png)