Создайте свой собственный набор данных для использования с Tensorflow или Keras - PullRequest
0 голосов
/ 11 октября 2018

В настоящее время я загружаю свой набор данных следующим образом:

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

Каждая подпапка являетсяКласс для классификации классификатор должен сортировать маргаритки, одуванчики, розы, подсолнухи или тюльпаны.

Решение может быть с тензорным потоком или керасом

1 Ответ

0 голосов
/ 11 октября 2018

Не самый элегантный метод, но для небольшого набора данных этого должно быть достаточно.Сначала получите список всех файлов и отметьте их классы:

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 (убедившись, что вы изменили их порядок одинаково) и разделить их на train и test.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...