Как преобразовать набор данных MNIST в 3 канала? - PullRequest
0 голосов
/ 21 апреля 2019

Я работаю над проектом обучения по обучению и пытаюсь заменить исходный набор данных Flower набором данных MNIST для определения чисел. Я слежу за Программой: Оригинальная программа Раздел 9. Задача состоит в том, чтобы использовать другой набор данных и посмотреть, насколько точной будет точность. Я сталкиваюсь с ошибкой при формировании кода в разделе 9.4:

from random import sample

def prepare_batch(flower_paths_and_classes, batch_size):
    batch_paths_and_classes = sample(flower_paths_and_classes, batch_size)
  >>>  images = [mpimg.imread(path)[:, :, :channels] for path, labels in
              prepared_images = [prepare_image(image) for image in images]
    X_batch = 2 * np.stack(prepared_images) - 1 # Inception expects colors ranging from -1 to 1
    y_batch = np.array([labels for path, labels in batch_paths_and_classes], dtype=np.int32)
    return X_batch, y_batch 

Ошибка в этой строке из-за формы изображений mnist. Когда я запускаю программу как есть, я получаю

IndexError: too many indices for array

Я новичок в python / tenorflow и хочу знать, как получить данные в нужном формате для ввода в предварительно обученную модель. Если я удаляю :channels из строки выше, это не приводит к ошибке, однако X_batch дает вывод (4, 299, 299), где он должен быть (?, 299, 299, 3). Поскольку MNIST - это Grayscale, мне нужно использовать функцию cv2, например:

#Note the rbg it's how opencv interprets a rgb image
img = cv2.merge((r,b,g))

#saves the merged image to a file     
cv2.imwrite("rgb.jpg",img)

или будет использоваться функция изменения формы? Любые советы будут великолепны!

...