天天看點

【H5】h5檔案之——深度學習訓練樣本制作0. 前言1. 正文參考文獻

every blog every motto: Light tomorrow with today.

0. 前言

作為深度學習的萌新可能都知道,訓練以後的參數儲存成h5格式檔案。那有時候看到訓練資料也是h5格式又是為什麼呢?

當訓練大量資料(圖檔)時,如果從硬碟加載并預處理,然後傳遞進網絡,這可能是一個非常耗時的過程。

其中從硬碟讀取圖檔會花費大量時間,更可行的方法是将其存在在單個檔案中,如HDF5和TFRecord。

其中TFRecord可以參考文章1、文章2等

本節主要介紹制作自己的H5格式訓練資料

說明: 更多關于h5檔案介紹,可參考文後連結。

1. 正文

1.1 圖檔轉數組

  1. 如果是普通圖檔,可直接利用下方代碼。
from PIL import Image
img = Image.Open('./1.png')
img_array = np.array(img)
           
  1. 如果是一張大的遙感影像,

    遙感影像轉數組,點我點我

1.2 數組切成小塊(patch)

如果上方單張圖檔就是一個訓練樣本(patch),可不用切成小塊。否則點選下方連結:

對數組進行切割成patch,點我

1.3 數組儲存到h5檔案中

說明: 不以具體資料說明,僅用少量資料進行展示

import numpy as np
import h5py

file_path = './1.h5'
patches = np.zeros((250, 128, 128, 3))
patches_y = np.zeros(250)
           

寫入檔案

with h5py.File(file_path, 'w') as f:
    f['x'] = patches
    f['y'] = patches_y
           

讀取檔案

說明: 讀取時如果用with ,讀取到的資料要在with 内,否組容易出錯,具體見附錄

f = h5py.File(file_path, 'r')

print(f.keys())
print(f['x'].shape)
print(f['y'].shape)
f.close()
           

1.3.1 讀取檔案嘗試(附錄)

下方列印在with 外面,報錯。

# 讀取檔案
with h5py.File('t.h5','r') as f:
    x_train = f['x']
    y_train = f['y']
print(y_train.shape)
           

1.3.2 追加資料(附錄)

第一次寫入

import h5py
import numpy as np

array = np.zeros(250)
arr = np.ones(10)

path = './dataset/w.h5'

# f = h5py.File(path, 'a')
# f['x'] = array

# f.close()
           

添加新資料

# f = h5py.File(path, 'a')
# f['y'] = arr

# f.close()
           

參考文獻

[1] https://blog.csdn.net/Hero_Never_GIVE_UP/article/details/85006835

[2] https://blog.csdn.net/mzpmzk/article/details/89188968

[3] https://www.jianshu.com/p/ae12525450e8

[4] https://www.jianshu.com/p/19f3ca564644

[5] https://reference.wolfram.com/language/ref/format/HDF5.html

[6] https://blog.csdn.net/u010945683/article/details/79931702

[7] https://blog.csdn.net/chaofanjun/article/details/88850324

[8] https://blog.csdn.net/lsh894609937/article/details/77018622

[9] https://blog.csdn.net/w5688414/article/details/78907180?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase

[10] https://blog.csdn.net/weixin_39190382/article/details/106441762

[11] https://blog.csdn.net/weixin_39190382/article/details/104348060

[12] https://blog.csdn.net/w5688414/article/details/86104271

繼續閱讀