Я работаю над проектом обучения по обучению и пытаюсь заменить исходный набор данных 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)
или будет использоваться функция изменения формы?
Любые советы будут великолепны!