当前,我以这种方式加载数据集:
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
答案 0 :(得分:1)
不是最优雅的方法,但是对于一个小的数据集,这应该足够了。 首先获取所有文件的列表,并记录它们的类:
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_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_data和class_labels重新排序(确保以相同的方式对其进行重新排序),然后将它们拆分为训练和测试。