Python 构建我自己的数据集,用于Tensorflow或Keras

Python 构建我自己的数据集,用于Tensorflow或Keras,python,tensorflow,keras,dataset,Python,Tensorflow,Keras,Dataset,目前,我通过以下方式加载数据集: from keras.datasets import mnist (x_train, y_train), (x_test, y_test) = mnist.load_data() flower_phoyos/daisy flower_phoyos/dandelion flower_phoyos/roses flower_phoyos/sunflowers flower_phoyos/tulips 但我想使用我自己的数据集,该数据集在文件夹中标记为: fro

目前,我通过以下方式加载数据集:

from keras.datasets import mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()
flower_phoyos/daisy 
flower_phoyos/dandelion
flower_phoyos/roses
flower_phoyos/sunflowers
flower_phoyos/tulips
但我想使用我自己的数据集,该数据集在文件夹中标记为:

from keras.datasets import mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()
flower_phoyos/daisy 
flower_phoyos/dandelion
flower_phoyos/roses
flower_phoyos/sunflowers
flower_phoyos/tulips
每个子文件夹都是一个要分类的类,分类器必须对雏菊、蒲公英、玫瑰、向日葵和郁金香进行分类


解决方案可以使用tensorflow或keras,这不是最优雅的方法,但对于小数据集来说,这应该足够了。 首先获取所有文件的列表,并记下它们的类别:

import os
import numpy as np
from matplotlib import pyplot as plt

file_list = []
class_list = []

classnames = ['daisy', 'dandelion', 'roses', 'sunflowers', 'tulips']   
for class_name in classnames:
    dir_list = os.listdir(os.path.join('flower_phoyos', class_name))
    file_list.extend(dir_list)
    class_list.extend([classnames] * len(dir_list))
现在您知道有多少示例(
len(file\u list)
)可以读入,并将它们分配到numpy数组

img_data = np.zeros(len(file_list), height, width, n_bands)
# Of course I've assumed that you want all of the images to be the same size.
for ii, file_ in enumerate(file_list):
    img = plt.imread(file_)
    # Resize to height, width if your images are not all the same size.
    img_data[ii, :, :, :] = img
class_labels = np.array(class_list)
现在,您可以重新排序img_数据和class_标签(确保以相同的方式重新排序),并将它们拆分为train和test