1. 程式人生 > 其它 >h5py檔案的建立和讀取,資料集的製作也不算很難

h5py檔案的建立和讀取,資料集的製作也不算很難

技術標籤:DeepLearningpython深度學習

文章目錄


前言

提示:以下內容僅做參考:
本文是針對圖片資料集的製作,把影象資訊用h5py庫來儲存。
有錯誤或者有不足請在評論區指出,我會積極改正,十分感謝。


一、h5py是什麼?

h5py存放兩類資料,一種是datasets,一種是group。datasets是一種陣列類資料,和numpy差不多。group(組),類似字典。
若想要具體瞭解,請參考官網https://docs.h5py.org/en/latest/index.html

二、建立h5檔案

1.引入庫

程式碼如下(示例):

import os
import numpy as np
import cv2
import h5py

2.構建函式

程式碼如下(示例):

print(data.head())def save_image_to_h5py(path):
    img_list = []
    label_list = []
    dir_counter = 0                  #TwoClass裡有兩個資料夾,有兩類,分別為0,1   dir_counter就為了來方便後面label
                                     #如果你的label不是0
,1,是其他或者例如cat,dog類,這裡 也可以不用它,後面直接用檔名做label for child_dir in os.listdir(path): child_path = os.path.join(path,child_dir) for dir_image in os.listdir(child_path): #遍歷二級檔案每個圖片並append資訊進陣列 img = cv2.imread(os.path.join(child_path,dir_image)) img_list.
append(img) label_list.append(dir_counter) dir_counter += 1 img_np = np.array(img_list) label_np = np.array(label_list) print('資料集標籤順序:\n',label_np) #這裡我列印了label資訊,其對應圖片資訊,前6張為0,後9張為1 #所以標籤會是[0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 ] #'a' ,如果已經有這個名字的h5檔案存在將不會開啟,目的為了防止誤刪資訊。 #‘w' ,如果有同名檔案也能開啟,但會覆蓋上次的內容。 with h5py.File('datasets/cat_or_not.h5','a') as f: f.create_dataset('training_cat',data = img_np) #建立兩個資料集,分別為training_cat f.create_dataset('training_label',data = label_np) #和training_label的陣列集 f.close()

我在註釋中已經寫的很詳盡了,如果還有懂的我在評論區回覆。

三、h5py的讀取

with h5py.File('datasets/cat_or_not.h5',"r") as f:
    for key in f.keys():
        print(f[key],key,f[key].name)
    f.close()

直接上程式碼,這個和c語言讀取檔案有相似之處。讀取的內容可以看下:
在這裡插入圖片描述


總結

h5py的建立和讀取都不難,只要稍微一看都能懂,在此附上原始碼,只要你們稍微花那麼點時間看看,很容易懂。https://github.com/Confused-Pig/CreateH5File
以上就是今天要講的內容,本文僅僅簡單介紹了h5py的使用,僅懂它不難,但是要學會用它。在深度學習中很多地方都要用它,用上兩次就熟悉了。github裡的原始碼很容易懂,我裡面放了幾張圖片,儲存的是他們的畫素,你們實在不懂的就去執行一下,結合執行結果來看,就很容易了。