Python将⾃⼰的图⽚数据集导⼊h5py,做识别的预处理
很多情况下,在训练卷积神经⽹络时,需要将⾃⼰的图⽚作为卷积神经⽹络的输⼊。
将⾃⼰的图⽚数据集导⼊h5py,所占空间⼩,使⽤⽅便
条件:⾃⼰的图⽚,eg:cats VS dogs,并将两类图⽚分别放置于两个⽂件夹(我这⾥是yes_tumble与not_tumble)
import os
import numpy as np
from PIL import Image
import tensorflow as tf
import matplotlib.pyplot as plt
北京o培训import sklearn
儿童学数学from sklearn import preprocessing
import h5py
import scipy
#导⼊必要的包
shuba
def get_files(file_dir):
cats = []
label_cats = []
dogs = []
label_dogs = []
蛋糕制作培训for file in os.listdir(file_dir+'/not_tumble'):
cats.append(file_dir +'/not_tumble'+'/'+ file)
label_cats.append(0) #添加标签,该类标签为0,此为2分类例⼦,多类别识别问题⾃⾏添加
for file in os.listdir(file_dir+'/yes_tumble'):
dogs.append(file_dir +'/yes_tumble'+'/'+file)
label_dogs.append(1)
#把cat和dog合起来组成⼀个list(img和lab)
image_list = np.hstack((cats, dogs))
label_list = np.hstack((label_cats, label_dogs))
#利⽤shuffle打乱顺序
temp = np.array([image_list, label_list])
establishment
temp = anspo()uncopyrightable
np.random.shuffle(temp)
2020高考试题及答案#从打乱的temp中再取出list(img和lab)
image_list = list(temp[:, 0])
label_list = list(temp[:, 1])
label_list = [int(i) for i in label_list]
return image_list,label_list
#返回两个list 分别为图⽚⽂件名及其标签顺序已被打乱
train_dir = 'F:/CSISA_Picture'
image_list,label_list = get_files(train_dir)
print(len(image_list))
青春随想print(len(label_list))
#450为数据长度的20%
Train_image = np.random.rand(len(image_list)-450, 64, 64, 3).astype('float32') Train_label = np.random.rand(len(image_list)-450, 1).astype('float32')
Test_image = np.random.rand(450, 64, 64, 3).astype('float32')
Test_label = np.random.rand(450, 1).astype('float32')
for i in range(len(image_list)-450):
Train_image[i] = np.array(plt.imread(image_list[i]))
Train_label[i] = np.array(label_list[i])
for i in range(len(image_list)-450, len(image_list)):
Test_image[i+450-len(image_list)] = np.array(plt.imread(image_list[i]))
Test_label[i+450-len(image_list)] = np.array(label_list[i])
# Create a new file
f = h5py.File('data.h5', 'w')
课外辅导学校
f.clo()
# Load hdf5 datat
train_datat = h5py.File('data.h5', 'r')
train_t_x_orig = np.array(train_datat['X_train'][:]) # your train t features train_t_y_orig = np.array(train_datat['y_train'][:]) # your train t labels test_t_x_orig = np.array(train_datat['X_test'][:]) # your train t features test_t_y_orig = np.array(train_datat['y_test'][:]) # your train t labels
f.clo()
print(train_t_x_orig.shape)
new wave
print(train_t_y_orig.shape)
print(train_t_x_orig.max())
print(train_t_x_orig.min())
print(test_t_x_orig.shape)
print(test_t_y_orig.shape)
#测试
plt.imshow(train_t_x_orig[222])
print(train_t_y_orig[222])